DOM节点

document表示每个文档的根节点,根节点中有一个子节点,称为文档元素(documentElement),每个文档只能有一个文档元素。

在HTML页面中,文档元素始终是<html>元素。在XML文档中,任何元素都可能称为文档元素。

nodeName 和 nodeValue

保存着有关节点的信息。

childNodes

每一个节点都有一个childNodes属性,其中包含一个NodeList的实例。NodeList是一个类数组对象,用于存储可以按位置存取的有序节点,并且NodeList是实时获取的。

// 两种访问方式
el.childNodes[0];
el.childNodes.item(0);
// 可以获取长度
el.childNodes.length;

将类数组转变为数组:

// 第一种
Array.prototype.slice.call(el.childNodes, 0);
// 第二种(ES6)
Array.from(el.childNodes);

parentNode

每个节点都有一个parentNode属性,指向其DOM树中的父元素。

<div>文本</div>
<script>
    console.log(document.querySelector('div').nodeName) // DIV
    // 对元素而言,nodeName始终等于元素的标签名,而nodeValue则始终为null。
    console.log(document.querySelector('div').nodeValue) // null
    console.log(document.querySelector('div').childNodes[0].nodeName) // #text
    console.log(document.querySelector('div').childNodes[0].nodeValue) // 文本
</script>

previousSibling 和 nextSibling

使用previousSiblingnextSibling可以在childNodes节点列表间导航。节点列表中第一个节点的previousSibling属性是null,最后一个节点的nextSibling属性也是null

firstChild 和 lastChild

firstChildlastChild分别指向childNodes中的第一个和最后一个子节点。

hasChildNodes()

改方法检查是否包含子节点。

ownerDocument

指向document

appendChild()

用于在childNodes列表末尾添加节点。如果把文档中已经存在的节点传给appendChild(),则这个节点会从之前的位置被转移到末尾。

el.appendChild(newEl);

insertBefore()

接收两个参数:要插入的节点和参照节点。作用是把要插入的节点放到参照节点之前,如果参照节点是null,则insertBefore()appendChild()效果相同。

el.insertBefore(newEl, el.firstChild);

replaceChild()

接收两个参数:要插入的节点和要替换的节点。

el.replaceChild(newEl, el.firstChild);

removeChild()

移除节点。

el.removeChild(el.firstChild);

cloneNode()

返回与调用它的节点一模一样的节点。接收一个布尔值参数,表示是否深复制。在传入true参数时,会进行深复制,即复制节点及其整个子DOM树。如果传入false,则只会复制调用该方法的节点。默认false

<ul>
    <li>11</li>
    <li>22</li>
    <li>33</li>
</ul>
<script>
	// [text, li, text, li, text, li, text]
    console.log(document.querySelector('ul').cloneNode(true).childNodes)
    // []
    console.log(document.querySelector('ul').cloneNode().childNodes)
</script>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值