总结:
0.1 创建
1. document.write(几乎不用)
2. innerHTML
3. createElement
注:
1. document.write 是直接将内容写入页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘
2. innerHTML 和createElement()不会导致页面全部重绘
3. innerHTML 创建多个元素效率更高(不要拼接字符串,采取数组形式拼接),结构稍微复杂
4. createElement() 创建多个元素效率稍低一点点,但是结构更清晰
0.2 增
1.appendChild
2.insertBefore
0.3 删
1.removeChild
0.4 改
1. 修改元素属性: src、href、title等
2. 修改普通元素内容: innerHTML 、innerText
3. 修改表单元素: value、type、disabled等
4. 修改元素样式: style、className
0.5 查
1. DOM提供的API 方法: getElementById、getElementsByTagName 古老用法 不太推荐
2. H5提供的新方法: querySelector、querySelectorAll 提倡
3. 利用节点操作获取元素: 父(parentNode)、子(children)、兄(previousElementSibling、
nextElementSibling) 提倡
0.6 属性操作
1.setAttribute:设置DOM属性
2.getAttribute:得到DOM属性
3.removeAttribute移除属性
0.7 事件操作
image.png1.获取元素
1.1根据 ID 获取
document.getElementById('id');
1.2 根据标签名获取
document.getElementsByTagName('标签名');
还可以获取指定标签内的子元素
element.getElementsByTagName('标签名');
1.3通过 HTML5 新增的方法获取
1. document.getElementsByClassName(‘类名’);// 根据类名返回元素对象集合
2. document.querySelector('选择器'); // 根据指定选择器返回第一个元素对象
3. document.querySelectorAll('选择器'); // 根据指定选择器返回
querySelector 和 querySelectorAll里面的类和id选择器需要加符号,比如:document.querySelector('#nav');document.querySelector('.nav');
不加符号的默认为标签选择器
1.4 获取特殊元素(body,html)
1. doucumnet.body // 返回body元素对象
1. document.documentElement // 返回html元素对象
2.事件
2.1常见事件
image.png3.操作元素
3.1改变元素内容
element.innerText//从起始位置到终止位置的内容, 但它去除 html 标签, 同时空格和换行也会去掉
element.innerHTML//起始位置到终止位置的全部内容,包括 html 标签,同时保留空格和换行
3.2常用元素的属性操作
1. innerText、innerHTML 改变元素内容
2. src、href
3. id、alt、title
直接使用element.操作,例如:element.id; element.src
3.3 表单元素的属性操作
type、value、checked、selected、disabled
直接使用element.操作,例如:element.value; element.disabled
3.4样式属性操作
我们可以通过 JS 修改元素的大小、颜色、位置等样式。
1. element.style 通过修改标签的行内样式操作
2. element.className 通过修改标签的类名样式操作
注意:
1.JS 修改 style 样式操作,产生的是行内样式,CSS 权重比较高
2.如果样式修改较多,可以采取操作类名方式更改元素样式。
3.通过className修改样式,需在style里提前设置好对应className的样式
3.5属性操作
3.5.1获取属性值
element.属性; 获取内置属性值(元素本身自带的属性)
element.getAttribute(‘属性’); 主要获得自定义的属性 (标准) 我们程序员自定义的属性
3.5.2 设置属性值
element.属性; 设置内置属性值
element.setAttribute(‘属性’); 主要设置自定义的属性 (标准)使用:element.setAttribute(‘class’,'nav1')
3.5.3 移除属性
element.removeAttribute('属性');
3.6 H5自定义属性
3.6.1 设置H5自定义属性
H5规定自定义属性data-开头做为属性名并且赋值。
比如 <div data-index=“1”></div>
或者使用 JS 设置
element.setAttribute(‘data-index’, 2)
3.6.2 获取H5自定义属性
1. 兼容性获取 element.getAttribute(‘data-index’);
2. H5新增 element.dataset.index 或者 element.dataset[‘index’] ie 11才开始支持
4.节点操作
4.1获取节点
4.1.1父节点和子节点
父节点:
node.parentNode 返回最近的一个父节点,没有则返回null
子节点:
开发中使用一般使用以下方法返回子节点
第一个子元素节点,可以使用 parentNode.chilren[0]
最后一个子元素节点,可以使用 parentNode.chilren[parentNode.chilren.length - 1]
1. parentNode.childNodes(标准)(但一般不使用);返回包含指定节点的子节点的集合,该集合为即时更新的集合。
注:返回值里面包含了所有的子节点,包括元素节点,文本节点等。
2. parentNode.children(非标准)(经常使用);返回所有的子元素节点,并且只返回子元素节点,且无浏览器兼容问题。
firstChild 返回第一个子节点,找不到则返回null。同样,也是包含所有的节点。
3. parentNode.firstChild(一般不使用)
lastChild 返回最后一个子节点,找不到则返回null。同样,也是包含所有的节点。
4. parentNode.lastChild(一般不使用)
firstElementChild 返回第一个子元素节点,找不到则返回null。
5. parentNode.firstElementChild
lastElementChild 返回最后一个子元素节点,找不到则返回null。
6. parentNode.lastElementChild
注意:这两个方法有兼容性问题,IE9 以上才支持。
4.1.2 兄弟节点
1. node.nextSibling 返回当前元素的下一个兄弟节点,找不到则返回null。同样,也是包含所有的节点。
2. node.previousSibling 返回当前元素上一个兄弟节点,找不到则返回null。同样,也是包含所有的节点。
以下这两个方法有兼容性问题, IE9 以上才支持:
3. node.nextElementSibling 返回当前元素下一个兄弟元素节点,找不到则返回null。
4. node.previousElementSibling 返回当前元素上一个兄弟节点,找不到则返回null。
解决兼容问题方法:
function getNextElementSibling(element) {
var el = element;
while (el = el.nextSibling) {
if (el.nodeType === 1) {
return el;
} }
return null;
}
4.2 创建节点
document.createElement('tagName')
4.3 添加节点
1. node.appendChild(child) 将一个节点添加到指定父节点的子节点列表末尾。类似于 CSS 里面的
after 伪元素。
2. node.insertBefore(child, 指定元素) 将一个节点添加到父节点的指定子节点前面。类似于 CSS 里面的 before
伪元素。
4.4 删除节点
node.removeChild(child) 方法从 DOM 中删除一个子节点,返回删除的节点。
4.5 复制节点(克隆节点)
node.cloneNode() 方法返回调用该方法的节点的一个副本。 也称为克隆节点/拷贝节点
注意:
1. 如果括号参数为空或者为 false ,则是浅拷贝,即只克隆复制节点本身,不克隆里面的子节点。
2. 如果括号参数为 true ,则是深度拷贝,会复制节点本身以及里面所有的子节点。
网友评论