愤怒的WebAPI(四)——节点

上一篇文章的案例中有关于节点的知识点,我没有提,这次讲一下,其实节点还挺有意思的。。。
在这里插入图片描述

一、节点属性

1、节点类型:nodeType
2、节点名:nodeName,对于元素节点来说,nodeName结果为大写的标签名,例如DIV
3、节点值:nodeValue,对于元素节点来说,nodeValue为null

二、节点访问关系

1、上下级

parentNode,父节点
② childNodes,获取所有子节点,会获取到文本节点
children,获取所有元素子节点(子元素)
④ firstChild,获取第一个子节点 -,会获取到文本节点
⑤ firstElementChild,获取第一个元素子节点,兼容性问题 ie9以下不支持
⑥ lastChild - 获取最后一个子节点,会获取到文本节点
⑦ lastElementChild,获取最后一个元素子节点,兼容性问题

2、同级

① nextSibling,获取下一个同级节点 , 会获取到文本节点
② nextElementSibling,获取下一个同级元素节点,兼容性问题
③ previousSibling,获取上一个同级节点,会获取到文本节点
④ previousElementSibling,获取上一个同级元素节点,兼容性问题

三、移动节点

1、appendChild() - 追加子节点

① 功能:将参数移动到调用的节点中所有子节点的最后
② 参数:要移动的节点

2、insertBefore() - 插入子节点

① 功能:将参数1插入到参数2参考节点的前面
② 参数1:要移动的节点
③ 参数2:参考节点,参考节点必须是调用节点的子节点

3、cloneNode() - 克隆节点

① 参数:布尔类型,true表示深拷贝,拷贝标签和内部内容,默认为false,表示浅拷贝,只拷贝标签本身
② 要克隆的元素和内部元素不能设置id
③ 克隆只是结构操作,无法克隆事件等内容

四、动态创建元素

1、document.write();

声明的内容会被添加到body的最后位置,如果在页面加载后使用document.write(),此时页面中所有内容都会被覆盖。
页面在运行后,内部的所有标签会被自动生成,这个过程我们称为一次文档流。如果在页面加载后再次使用document.write(),会开启一个新的文档流,这时上一次文档流的内容会被覆盖。

2、innerHTML

① 好处:
可以指定位置进行元素的创建操作。
不会对页面中的所有内容造成覆盖。
② 缺点:
会覆盖当前元素内的内容。
使用+=方式虽然可以避免结构的覆盖,但实际上内部的新旧标签不是同一个了,事件等内容均不存在了。

3、document.createElement();

① 用于进行元素节点的创建操作
② 参数:字符串形式的标签名
③ 特点:使用此方式创建的元素默认不在页面中显示,如果需要显示,需要自己进行移动节点操作。
④ 优点:性能好
⑤ 缺点:如果使用document.createElement()进行复杂结构创建时较为繁琐

4、动态创建元素小结

① 复杂结构使用innerHTML
② 其他情况下使用document.createElement()
③ 如果要进行元素创建的元素box中已经具有了其他元素,这时必须使用document.createElement()

5、移除元素

removeChild(); 移除子元素
① 参数:要移除的元素,必须是调用元素的子元素
② 返回值:被移除的元素

猜你喜欢

转载自blog.csdn.net/weixin_40589472/article/details/84204595
今日推荐