JS的DOM中添加、移动、复制、删除、替换、查找节点的方法?

开发 前端
由于DOM对象属于引用类型,所以在操作AppendChild和InsertBefore方法时, 控制的节点如果是文档中存在的节点,那么将把这个节点移到目标处。

创建元素

document.createElement('tagName');

添加元素

parent.appendChild(childNode);

注:父元素调用该方法。

移动元素

由于DOM对象属于引用类型,所以在操作appendChild和insertBefore方法时, 控制的节点如果是文档中存在的节点,那么将把这个节点移到目标处。

复制节点

oLi.cloneNode(true);

注:参数true表示深度克隆(深拷贝),false 表示浅度克隆(浅拷贝),深拷贝也就是复制节点及整个节点数;浅拷贝复制节点本身。复制后返回的节点副本属于文档所有,但并没有为它指定父节点。因此,整个节点副本就成为一个‘孤儿’:

<ul id='oUl'>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<script>
  var myList = document.getElementById("oUl"); 
  var deepList = myList.cloneNode(true);
  console.log(deepList.childNodes.length);//3 (IE<9) 或7 (其它浏览器)
  var shallowList = myList.cloneNode(false); 
  console.log(shallowList.childNodes.length);//0
</script>

cloneNode()方法不会复制添加DOM节点的JS属性,例如事件处理程序等。这个方法只复制特性,其他一切都不会复制。

删除节点

parentNode.removeChild(childNode);

注:父元素调用该方法,返回值为被删除的节点。

替换元素

parentNode.replaceChild(newNode,oldNode);

注:oldNode节点必须是parentNode的子节点。

插入元素

parentNode.insertBefore(newEle, oldNode);

注:父元素调用该方法。

查找节点的总结

  • childNodes—返回节点到子节点的节点列表firstChild— 返 回 节 点 的 首 个 子 节 点 ; lastChild—返回节点的最后一个子节点; nextSibling—返回节点之后紧跟的同级节点; nodeName—返回节点的名字,根据其类型; nodeType—返回节点的类型。
  • nodeValue—设置或返回节点的值,根据其类型; ownerDocument—返回节点的根元素(document对象); parentNode—返回节点的父节点。
  • previousSibling—返回节点之前紧跟的同级节点。
  • text—返回节点及其后代的文本(IE独有); xml—返回节点及其后代的XML(IE独有); 节点对象的方法。
  • appendChild()—向节点的子节点列表的结尾添加新的子节点; cloneNode()—复制节点。
  • hasChildNodes()—判断当前节点是否拥有子节点; insertBefore()—在指定的子节点前插入新的子节点; normalize()—合并相邻的Text节点并删除空的Text节点; removeChild()—删除(并返回)当前节点的指定子节点; replaceChild()—用新节点替换一个子节点。

IE6独有方法

  • selectNodes()—用一个XPath表达式查询选择节点; selectSingleNode()—查找和XPath查询匹配的一个节点。
  • transformNode()—使用XSLT把一个节点转换为一个字符串。transformNodeToObject()—使用XSLT把一 个节点转换成为一个文档。

经典的问题解析。

创建新节点

createDocumentFragment() //创建一个DOM片段createElement() //创建一个具体的元素createTextNode() //创建一个文本节点。

添加、移除、替换、插入

appendChild() 
removeChild() 
replaceChild()
insertBefore() //在已有的子节点前插入一个新的子节点查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)
getElementById() //通过元素Id,唯一性
责任编辑:姜华 来源: 今日头条
相关推荐

2022-03-22 07:51:45

JS父节点

2021-01-25 10:05:27

ReactDOM前端

2010-09-08 15:13:09

Node节点Node属性

2021-08-16 09:35:34

Collections Java开发

2009-03-10 15:05:16

JDBC泛型数据库

2010-10-08 11:52:29

2009-12-25 14:57:10

Linux Vi删除

2009-08-17 08:04:00

C#高级编程

2023-05-22 10:40:22

WeakMapsMaps

2011-05-24 10:04:39

Oracle重复记录

2022-03-01 07:52:38

链表指针节点

2021-09-03 08:58:00

二叉搜索树节点

2020-11-13 09:14:23

Linux重复文件命令行

2017-01-16 16:20:31

Windows 10右键菜单操作方法

2010-09-02 16:40:15

SQL删除

2021-07-22 09:53:34

Vector类Java添加元素

2010-09-28 13:16:43

JavaScriptDOM

2010-09-28 09:49:49

DOM模型

2010-10-19 17:28:08

SQL SERVER外

2013-06-05 11:41:53

点赞
收藏

51CTO技术栈公众号