JavaScript--DOM操作(二)

一、DOM节点操作

概述:

一般地,节点至少拥有nodeType(节点类型)、nodeName(节点名称)和nodeValue(节点值)这三个基本属性

  • 元素节点 nodeType 为 1
  • 属性节点 nodeType 为 2
  • 文本节点 nodeType 为 3

一、节点层级(父子兄)

一、父级节点
  • node.parentNode //返回某节点的父节点(最近的一个父节点)
<div class="box">
	<span class="zxw">x</span>
</div>
var zxw = document.querySelector('.zxw');
console.log(zxw.parentNode);
最后输出的值为:
	<div class="box">
		<span class="zxw">x</span>
</div>

注意:如果指定的节点没有父节点,则返回null;

二、子节点
  1. parentNode.childNodes//返回包含指定节点的子节点的集合,该集合为即时更新的集合

eg: var ul = document.querySelector(‘ul’)
console.log(ul.childNodes);//所有的子节点,包含 元素节点 文本节点

  • 如果只想要获取里面的元素节点,可以加一个判定条件:

if(ul.childNodes[i].nodeType == 1)//元素节点 nodeType 为 1
注意:返回值里面包含了所有的子节点,包括元素节点,文本节点等。如果只想要获得里面的元素节点,则需要专门处理。 所以我们一般不提倡使用childNodes
:::info

  1. parentNode.children//是一个只读属性,返回所有的子元素节点,只返回子元素节点,其余节点不返回
    :::

  2. parentNode.firstChild//返回第一个子节点(包含所有节点)

  3. parentNode.lastChild//返回最后一个节点(包含所有的节点)

  4. parentNode.firstElementChild//返回第一个子元素节点(只返回子元素节点)

  5. parentNode.lastElementChild//返回最后一个子元素节点(只返回子元素节点)

注意:
实际开发中,firstChild 和 lastChild 包含其他节点,操作不方便,而 firstElementChild 和 lastElementChild 又有兼容性问题,那么我们如何获取第一个子元素节点或最后一个子元素节 点呢?
解决方案:
如果想要第一个子元素节点,可以使用 parentNode.chilren[0] 如果想要最后一个子元素节点,可以使用 parentNode.chilren[parentNode.chilren.length - 1]

三、兄弟节点
  1. node.nextSibling//返回当前元素的下一个兄弟节点(包含所有节点)
  2. node.previousSibling//返回当前元素的上一个兄弟节点(包含所有节点)
  3. node.nextElementSibling//返回当前元素的下一个兄弟元素节点(只返回兄弟元素节点)
  4. node.previousElementSibling//返回当前元素的上一个兄弟元素节点(只返回兄弟元素节点)
四、创建节点
  1. document.createElement('tagName')

document.createElement() 方法创建由 tagName 指定的 HTML 元素。因为这些元素原先不存在,是根据我们的需求动态生成的,所以我们也称为动态创建元素节点。

五、添加节点
  1. node.appendChild(child)

将一个节点添加到指定父节点的子节点列表末尾,类似于css中的after伪元素

  1. node.insertBefore(child, 指定元素)

将一个节点添加到父节点的指定子节点前面。类似于 CSS 里面的 before 伪元素。

<body>
    <ul>
        <li>123</li>
    </ul>
    <script>
        // 1. 创建节点元素节点
        var li = document.createElement('li');
        // 2. 添加节点 node.appendChild(child)  node 父级  child 是子级 后面追加元素  类似于数组中的push
        var ul = document.querySelector('ul');
        ul.appendChild(li);
        // 3. 添加节点 node.insertBefore(child, 指定元素);
        var lili = document.createElement('li');
        ul.insertBefore(lili, ul.children[0]);
        // 4. 我们想要页面添加一个新的元素 : 1. 创建元素 2. 添加元素
    </script>
</body>

六、删除节点
  1. node.removeChild(child)//从DOM中删除一个子节点,返回删除的节点
var ul = document.querySelector('ul');
ul.removeChild(ul.children[0]);

七、复制(克隆)节点
  1. node.cloneNode()//返回调用该方法的节点的一个副本。 也称为克隆节点/拷贝节点

注意:

  • 如果括号参数为空或者为 false ,则是浅拷贝,即只克隆复制节点本身,不克隆里面的子节点。
  • 如果括号参数为 true ,则是深度拷贝,会复制节点本身以及里面所有的子节点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值