创建节点
通常的方法就是使用document.createElement("")这种方式来创建
添加元素
- appendChild()方法,在父级元素中插入一个Node节点,插入到末尾
- insertAdjacentHTML()方法,这个方法比较使用
1.appendChild()方法
node代表的是父节点,而child代表的是子节点。只不过这种添加方式是加在父节点的子节点的末尾。相当于追加数组push。
insertAdjacentHTML()方法
insertAdjacentHTML() 是Element的API中的一个方法,可以将字符串文本转化为你想要的节点(Node),并且插入到你想要插入的位置中。而且它并不会向innerHTML一样会替换掉已有的节点,而是会插入到指定位置。
模型图
一共有四个位置可供选择
我是这么理解的可以把选中的元素想象成一个盒子,
begin就是盒子最上面的一条线,end就是盒子最下面的一条线
那么beforebegin就是在盒子(本元素)最上面的线的前面所以就是在本元素前面添加
而afterend则就是在盒子(本元素)最下面的线的后面所以就是本元素的下面
let text = "文化底蕴"
//这个medium是获取的div元素
let medium=document.querySelector("#medium")
medium.insertAdjacentHTML("afterend",`<li>${text}</li>`)
注意:不能这么使用,就是先通过documnet.createElement()创建元素,
然后再通过insertAdjacentHTML()添加元素.
因为insertAdjacentHTML添加的是字符串,而他可以解析字符串中的element标签,
但是不能直接传入元素节点,否则就会显示这样
<div class="box2"></div>
//首先创建一个span元素
let span= document.createElement("span")
//给span元素内部添加内容
span.innerHTML="醉里挑灯看剑,梦回吹角连营"
box2.insertAdjacentHTML("afterbegin",span)
而将这个方法更改成insertAdjacentElement就可以了,他只能添加元素节点。
let span= document.createElement("span")
span.innerHTML="醉里挑灯看剑,梦回吹角连营"
box2.insertAdjacentElement("afterbegin",span)
这三个兄弟方法类似,只是传入的第二个参数有些不同
insertAdjacentElement()第二个参数只能插入元素节点,传文本节点会报错,
insertAdjacentHTML()传入的第二个参数会当成字符串解析,会解析字符串中的element元素.
只能传入字符串
insertAdjacentText()传入的第二个参数都会当作字符串解析
insertBefore()方法
Node.insertBefore() 方法在参考节点之前插入一个拥有指定父节点的子节点
而所谓的“拥有指定父节点”,就是指被参照的节点的父节点就是调用insertBefore方法的节点。
注意:被参照的节点的父节点就是调用insertBefore方法的节点
let insertedNode = parentNode.insertBefore(newNode, referenceNode);
//newNode:将要插入的节点
//referenceNode:被参照的节点(即要插在该节点之前)
//insertedNode:插入后的节点
//parentNode:父节点
//而实际上insertedNode===newNode
console.log(box3.insertBefore(p3, p1)===p3);//true
insertBefore接收两个参数(想要添加的子元素,指定元素)
insertBefore方法可以将想要添加的元素添加在指定元素的前面
注意这个指定元素是父节点的子元素。
删除元素
node父元素,child是子元素。
有两种途径:
1.removeChild()方法
语法:父元素.removeChild(要删除的节点对象)
也就是通过父元素删除子元素
2.remove()方法
语法:要删除的对象.remove()
自己删除自己,也就是所谓的自删
注意:remove()方法可用于删除父节点上的所有元素,包括所有文本和子节点。
复制节点
克隆节点的方法:要克隆的节点.cloneNode()
node.cloneNode();括号为空或者里面是false浅拷贝, 只是复制标签不复制里面的内容
node.cloneNode(true);括号为true 深拷贝,复制标签和里面的内容
注意如果想要及内容也克隆过来,只需要将()里面添加true即可
版权归原作者 古风残影 所有, 如有侵权,请联系我们删除。