补补js基础,学校在上网课,不用担心上课影响学习啦~
参考的是尚硅谷的js基础140讲,讲的很好,适合小白
链接在此: JavaScript基础
快速查看
1. 基础概念与操作
-
DOM:即Document Object Model 文档对象模型
可以通过DOM对html文档(一个网页)进行操作,网页的每一部分都作为一个对象,由这些对象之间的关系我们可以构造一个模型。
给出DOM中任意一对象,我们可以根据关系对其他所有对象进行操作。
-
节点: Node,是构成网页最基本的部分,网页中的每一部分都可作为一个节点。
上述对象都可称作节点
常见分为四类:
-
文档节点,即整个文档
-
元素节点,文档中的html标签
-
属性节点,元素的属性
-
文本节点,文本内容
-
获取一个对象并对其进行修改
<div> <button id="btn">小按钮</button> <script type="text/javascript"> var btn = document.getElementById("btn"); /*利用文档对象通过id获取按钮这个对象*/ btn.innerHTML = "a button"; //修改btn中的文本值 </script> </div>
-
-
-
事件:即文档或浏览器窗口中发生的一些交互瞬间
如点击按钮,输入等等,我们可以将事件与一些js代码绑定实现许多功能。
-
获取按钮对象并处理点击事件
<div> <button id="btn">小按钮</button> <script type="text/javascript"> var btn = document.getElementById("btn"); /*利用文档对象通过id获取按钮这个对象*/ btn.onClick = function(){ console.log("正在点击中") }; </script> </div>
-
需要注意的是,浏览器加载页面是自上而下的,故js代码应该在对象下面,我们可以利用onload来实现js代码在对象上面
onload事件会在页面加载后再触发,我们可以利用将js代码放到与之绑定的函数内。
-
2. DOM查询
获取元素节点
-
通过document对象调用元素节点
-
getElementsById()
-
getElementsByTagName() //通过标签名获取节点对象
-
getElementsByName() //通过name属性获取节点对象
-
-
innerHTML用于获取元素内部的HTML代码, 但是对于自结束标签(没有内部内容)没有意义,自结束标签的相关属性可以用.运算符如(.value)直接获取
-
获取元素节点的子节点
-
通过具体的元素节点调用
-
getElementsByTagName()
//是一种方法,返回的是当前节点指定标签名的后代节点
2. childNodes //表示当前节点的所有节点 3. firstChild //表示当前节点的第一个子节点 4. lastChild //含义同上 ***需要注意的是DOM标签间的空白会被当文本节点,故一般我们用children(返回当前元素的所有子元素)***
-
-
-
获取父节点和兄弟节点
-
parentNode //表示当前元素的父节点
-
previousSibling //表示当前节点的前一个兄弟节点
-
nextSibling //表示当前节点的后一个兄弟节点
funtion (name, fun) { var button = document.getElementById(name); button.onClick = fun; //将fun函数作为参数传入,故在赋值语句右边
innerText可以只获取元素内部的文本,不同innerHTML
-
一些利用document的属性DOM查询方法
-
document.body //可以获取到body对象
-
document.all //获得页面中所有元素(结果是数组)
-
document.querySelector(“选择器”) //可通过CSS选择器(即.classname,div这类的)查找,但是此方式只会返回一个元素,即使有多个满足条件。
-
document.querySelectorAll(“选择器”) //同上,返回的是数组,可有多个元素
3.DOM的增、删、改
A.增加
第一种方式
-
创建一个节点
document.createElement() //创建一个新元素,参数是其tagname
-
给节点增加内容
节点.createTexrNode(“”)
-
-
在当前节点下增加一个新节点
appendChild(子节点)
-
在一个子节点前面新插入一个子节点
父节点.insertBefore(new, old) //参数为新旧节点
-
第二种方式
-
使用innerHTML属性直接将其添加
父节点.innerHTML += 想要增加的html
小结
后一种方式比前一种方式简单,但是其会使所有子节点都重新创建(会将其绑定的函数都取消),故我们应结合两种方式
-
步骤如下
-
创建一个新节点
-
利用新节点的innerHTML属性给其增加内容
-
利用appendChild()将此新节点增加到父节点中
-
B.修改
-
用一个新节点替换子节点
父节点.replaceChild(new, old)
C.删除
-
删除子节点
父节点.removeChild(子节点)
当不知道要删除节点的父节点为谁时,可以利用.parentNode获取其父节点