当前位置:网站首页>DOM 节点

DOM 节点

2022-06-21 23:23:00 InfoQ

 DOM 节点

页面是由一个一个得节点组成
组成部分都是一个节点
       
   1. document
            一个页面中最大得节点, 只能有一个
            承载所有节点得容器, 不属于元素
            根节点
          2. html
            一个页面中最大的元素节点
            承载所有其他节点得
            根元素节点
          3. 元素节点
          head / body / div / ul / table / ...
            只是不同得标签再页面中得表现形式不一样
          
 
特点: 是页面得标签
          4. 文本节点
          每一段文本内容都是一个文本节点
            包含 换行 和 空格
            一般作为元素节点得子节点存在, 用来表示该元素节点再页面上显示得内容
          5. 属性节点
            
注意: 属性节点不作为独立节点出现, 必须依赖元素
            因为没有元素, 属性节点就是文本
          6. 注释节点
            作为独立节点出现
            为说明文本使用

 节点操作

        不止操作元素
        还要操作 注释节点 文本节点 属性节点
     
1.创建节点
          通过 JS 得语法来制造一个 标签 / 文本 / 注释 / ...
          1. createElement()
          2. createtextNode()
          3. createComment()
          4. createAttribute()
 
 
2.插入节点
          把我创造得节点插入另一个节点中, 出现父子结构
          1. appendChild()
          2. insertBefore()
      
3.删除节点
      把一个已经存在得节点移出
          1. removeChild()
          2. remove()
       
4. 替换节点
          创造一个节点去替换一个存在得节点
          1. replaceChild()
 
5.克隆节点
        把一个已经存在得节点复制一份
          1. cloneNode()
            参数默认为 false, 不克隆后代节点
          选填 true, 克隆后代节点
 

 

获取节点

       
   1. 方法(上面已经讲过)
          2. 属性
公共html部分
 <div id=&quot;box&quot; class=&quot;abc&quot; index=&quot;hello world&quot;>
 hello
 <p>你好</p>
 wolrd
 <p>世界</p>
 </div>
 获取元素
 var div = document.querySelector('div')

 1. childNodes
: 元素.childNodes
&nbsp; &nbsp; &nbsp; &nbsp; 元素得所有 子节点(伪数组)
 var child = div.childNodes;
 console.log(child);
&nbsp; &nbsp; &nbsp; &nbsp; 
2. children
: 元素.children
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 元素得所有 子元素节点(伪数组)
 var childEle = div.children;
 console.log(childEle);
&nbsp; &nbsp; &nbsp; 
&nbsp; 3. firstChild
: 元素.firstChild
&nbsp; &nbsp; &nbsp; 元素得第一个 子节点
 var first = div.firstChild;
 console.log(first);
&nbsp; &nbsp; &nbsp; &nbsp; 4. firstElementChild :元素.firstElementChild
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 元素得第一个 子元素节点
var firstEle = div.firstElementChild;
 console.log(firstEle);
&nbsp; &nbsp; &nbsp; &nbsp; 5. lastChild: 元素.lastChild
&nbsp; &nbsp; &nbsp; 元素得最后一个 子节点
 var last = div.lastChild;
 console.log(last);
&nbsp; &nbsp; &nbsp; &nbsp; 6. lastElementChild: 元素.lastElementChild
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 元素得最后一个 子元素节点
 
var lastEle = div.lastElementChild;
 console.log(lastEle);
 7. previousSibling:
 元素.previousSibling
&nbsp; &nbsp; &nbsp; &nbsp; 元素得上一个 兄弟节点
 var prev = div.previousSibling;
 console.log(prev);
&nbsp; &nbsp; &nbsp; 
&nbsp; 8. previousElementSibling
: 元素.previousElementSibling
&nbsp; &nbsp; &nbsp; &nbsp; 元素得上一个 兄弟元素节点
var prevEle = div.previousElementSibling;
 console.log(prevEle);
&nbsp; &nbsp; &nbsp; &nbsp; 
9. nextSibling:
 元素.nextSibling
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + 得到: 元素得下一个 兄弟节点
var next = div.nextSibling;
 console.log(next);
&nbsp; &nbsp; &nbsp; &nbsp; 
10. nextElementSibling:
 元素.nextElementSibling
&nbsp; &nbsp; &nbsp; &nbsp; 元素得下一个 兄弟元素节点
var nextEle = div.nextElementSibling;
console.log(nextEle);
&nbsp;11. parentNode:
元素.parentNode
&nbsp; &nbsp; &nbsp; &nbsp; 该元素得 父节点
&nbsp; &nbsp; &nbsp;
var parent = div.parentNode;
 console.log(parent);
&nbsp; &nbsp; &nbsp; &nbsp; 12. parentElement: 元素.parentElement
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 该元素得 父元素节点
var parentEle = div.parentElement;
 console.log(parentEle);
&nbsp; &nbsp; &nbsp; &nbsp; 13. attributes:元素.attributes
&nbsp; &nbsp; &nbsp; &nbsp; 该元素得所有 属性节点
 var attrs = div.attributes;
 console.log(attrs);

节点属性

&nbsp; &nbsp; &nbsp; 属性节点
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 元素身上放的属性,是一个节点
&nbsp; &nbsp; &nbsp; &nbsp; 节点属性
&nbsp; &nbsp; &nbsp; &nbsp; 描述找个节点得信息
&nbsp; &nbsp; &nbsp; &nbsp; 不同的节点有相同得属性名, 值不一样
&nbsp; 
&nbsp;1. nodeType
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 以数字得形式来表示一个节点类型
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 一种节点得编号
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 元素节点: 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 属性节点: 2
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 文本节点: 3
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 注释节点: 8

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2. nodeName
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 节点得名称
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 元素节点: 大写标签名(全大写)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 属性节点: 属性名
&nbsp; &nbsp; &nbsp; &nbsp; 文本节点: 所有文本节点名称全部叫做 #text
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 注释节点: 所有注释节点名称全部叫做 #comment
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3. nodeValue
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 节点的值
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 元素节点: null
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 属性节点: 属性值
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 文本节点: 文本内容(包含换行和空格)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 注释节点: 注释内容(包含换行和空格)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 

// 元素节点
 var div = document.querySelector('div')
 // 属性节点
 var attr = div.attributes[0]
 // 文本节点
 var text = div.childNodes[2]
 // 注释节点
 var comment = div.childNodes[1]

 console.log('元素节点 ', div)
 console.log('属性节点 ', attr)
 console.log('文本节点 ', text)
 console.log('注释节点 ', comment)

 console.log('===========================')


 // 节点属性 - 节点的值
 console.log('元素节点 ', div.nodeValue)
 console.log('属性节点 ', attr.nodeValue)
 console.log('文本节点 ', text.nodeValue)
 console.log('注释节点 ', comment.nodeValue)

原网站

版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://xie.infoq.cn/article/ecd1f9278b784542c40fb9e8e