Node对象的appendChild和append方法

这里主要就目前本人了解到的关于appendChild和append方法阐述的一点点理解。这两个方法都是在父节点的末尾添加子节点。

  1. appendChild()
 	var childNode = parentNode.appendChild(childNode)

该方法的参数是一个Node对象,返回值依然是该Node对象(参数中的childNode和返回值childNode指向同一个Node对象)

  • 插入一个新的node节点:
    HTML代码
 <div id="container1">
     <h1>标题1</h1>
     <p>段落1</p>
 </div>

JS代码

var container1 = document.querySelector('#container1')
var p2 = document.createElement('p')
p2.textContent = '段落2'
var p22 = container1.appendChild(p2)
console.log(p2 === p22) //true

页面显示结果
在这里插入图片描述

  • 插入页面中原有的node节点:
    HTML代码
<div id="container1">
 <h1>标题1</h1>
 <p>段落1</p>
</div>
<div id="container2"></div>

JS代码

 var p1 = document.querySelector('p')
 var container2 = document.querySelector('#container2')
 var p1 = container2.appendChild(p1)

页面显示结果
在这里插入图片描述
因此,如果想要将页面中原有的节点插入到另外一个地方,节点会先从原位置移除,然后再插入到新位置。如果想要在原位置保留该节点,则需要先进行cloneNode,创建待插入节点的副本,然后再进行插入操作。
JS代码

var p1 = document.querySelector('p')
var p11 = p1.cloneNode(true) //cloneNode参数设置成true,表示连同子节点一起克隆,如果设置成false,则只有p元素会被克隆
var container2 = document.querySelector('#container2')
var p11 = container2.appendChild(p11)
console.log(p1 === p11) //false

页面显示结果
在这里插入图片描述
2. append()
MDN中说该方法还是一个实验中的方法,因此使用时可能存在兼容性问题,特别是IE浏览器(IE11不支持append方法),需要进行Polyfill。append方法也是既可以插入新节点或者文档中原有的节点,这一点和appendChild方法一样。append方法与上述的appendChild方法主要存在以下3个区别:

  • append方法的参数可以是一组Node对象或者DOMString对象(这里可以简单理解成String对象),而appendChild方法的参数只能是一个Node对象。
var container2 = document.querySelector('#container2')
container2.append('text') //成功在容器container2中插入textContent为‘text’的文本节点
var text1 = container2.appendChild('text') //报错

以上代码中使用appendChild插入一个文本节点报以下错误:
在这里插入图片描述

  • append方法没有返回值
  • append方法可以同时插入几个子节点(包括字符串),而appendChild一次只可以插入一个子节点
  container2.append(p11, 'haha')
  var haha1 = container2.appendChild(p11, 'haha') //只会添加p11,字符串’haha‘被忽略

目前如果想在IE9+中使用append方法,需加入Polyfill

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值