Node对象的insertBefore方法

var node = parentNode.insertBefore(node, referenceNode) 

作用:将node节点插入到referenceNode节点之前,parentNode为对应的父节点。返回值node是插入的node节点本身。

  1. 插入新节点

HTML代码

 <div id="container">
     <h1>标题1</h1>
     <p id="p1">段落1</p>
 </div>

JS代码

var parentNode = document.querySelector('#container');
var referenceNode = document.querySelector('#p1')
var newNode = document.createElement('p')
newNode.textContent = '段落2'
var node = parentNode.insertBefore(newNode, referenceNode) 
console.log(node === newNode) //true

结果如下图:
在这里插入图片描述
如果referenceNode为null或undefined

var node = parentNode.insertBefore(newNode, null) 
var node = parentNode.insertBefore(newNode, undefined) 

结果如下图:
在这里插入图片描述
因此,如果referenceNode为null或undefined的情况下,新节点(这里讨论的是新节点)将插入到父节点的末尾。

  1. 插入文档中原有的节点
var referenceNode= document.querySelector('h1')
var nodeExist = document.querySelector('#p1')
var node = parentNode.insertBefore(nodeExist, referenceNode)
console.log(node === nodeExist) //true

结果如下图:
在这里插入图片描述
因此,文档中已存在的p节点会从原位置被插入到referenceNode之前,如果想在原位置保留一份p,那么需要先clone一份。

var referenceNode = document.querySelector('h1')
var nodeExist = document.querySelector('#p1')
var nodeExitClone = nodeExist.cloneNode(true) //克隆该节点及其所有的子节点
var node = parentNode.insertBefore(nodeExitClone , referenceNode)
console.log(node === nodeExistClone) //true

结果如下图:
在这里插入图片描述
备注:没有insertAfter方法,可以使用insertBefore+nextSibling来实现insertAfter的效果。

var referenceNode = document.querySelector('h1')
var newNode = document.createElement('p')
newNode.textContent = '段落2'
var node = parentNode.insertBefore(newNode, referenceNode.nextSibling)

得到的结果图如下:
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值