js基础之节点

js基础之节点
一、node节点

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点。元素是节点的别称,节点包含元素,当然节点还有好多细化的种类。根节点:root >>>> HTML没有父节点 。

在这里插入图片描述

以下表格中,带*获取的节点都包含空白文本节点。

属性描述
*childNodes获取当前元素的所有子节点
*previousSibling获取当前节点的前一个同级节点
*nextSibling获取当前节点的后一个同级节点
*firstChild获取当前元素节点的第一个子节点
*lastChild获取当前元素节点的最后一个子节点
firstElementChild获取当前元素节点的第一个元素子节点
lastElementChild获取当前元素节点的最后一个元素子节点
ownerDocument获取该节点的文档根节点,相当与 document
parentNode获取当前节点的父元素
<ul>
    rgdtfre
    <li class="li" id="li" data-index="1"><a>dgrsdc</a></li>
    <li>dgrsdc</li>
</ul>
var ul = document.querySelector("ul")
console.log(ul.childNodes)
console.log(ul.firstChild)
console.log(ul.lastChild)
console.log(ul.firstElementChild)
console.log(ul.lastElementChild)
console.log(ul.lastElementChild.previousSibling)
console.log(ul.lastElementChild.previousElementSibling)

打印结果:

在这里插入图片描述

二、节点操作
属性描述
nodeType节点种类,返回值是数字
nodeValue获取(文字)节点的文本内容
nodeName返回node节点名称(#text,注释, 标签…)
attributes获取所有,该节点的属性信息, 一般只用作获取,设置使用setAttribute()
<ul>
    rgdtfre
    <li class="li" id="li" data-index="1"><a>dgrsdc</a></li>
    <li>dgrsdc</li>
</ul>
var ul = document.querySelector("ul")
console.log(ul.childNodes) // 所有li的数组 [text, li#li.li, text, li, text]
console.log(ul.childNodes[1].nodeValue) // null 元素节点NodeValue属性值为空
console.log(ul.childNodes[0].nodeValue) // rgdtfre
console.log(ul.childNodes[1].innerHTML) // <a>dgrsdc</a>
console.log(ul.childNodes[1].innerText) // dgrsdc
ul.childNodes[1].innerText = "<a>123</a>"
console.log(ul.childNodes[1].outerHTML)  // <li class="li" id="li" data-index="1">&lt;a&gt;123&lt;/a&gt;</li>
console.log(ul.childNodes[1].attributes) // 返回当前元素的有所属性
console.log(ul.childNodes[1].attributes[0])  // class="li"
console.log(ul.childNodes[1].attributes["id"]) // id="li"
三、常见的节点类型
nodeType值含义
1元素(DIV、BODY、LI、SPAN… )
2属性代表属性节点 (class,src,href)
3文本节点(text节点)
8代表注释节点
9代表document节点
四、文档碎片

创建好文档碎片,在要插入的节点附加在上面,最后一次性添加到document中,可以更好的提高性能。

var ul = document.querySelector("ul")
var cache = document.createDocumentFragment()
for (var i = 0; i < 20; i++) {
    var li = document.createElement("li")
    li.className = "box"
    li.innerHTML = i
    cache.appendChild(li)
}
ul.appendChild(cache)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值