-- appendChild -- 用来插入节点;
<body>
<div id="div4">1<div>2</div><div>3</div></div>
</body>
<script>
// var div4 = document.getElementById('div4')
// var p = document.createElement('p')
// div4.appendChild(p)
</script>
<body>
<div id="div4">1<div>2</div><div>3</div></div>
</body>
<script>
var div4 = document.getElementById('div4')
var p = document.createElement('p')
div4.appendChild(p)
</script>
-- hasChildNodes -- 用来判断一个字节是否有子节点;
该方法返回一个布尔值,表示当前节点是否有子节点.
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
console.log(div1.hasChildNodes()) // true
</script>
-- cloneNode -- 用来克隆一个节点
1.该方法可以传入一个布尔值true,表示复制指定元素的子节点,也会复制该节点的全部子节点,如果不想复制子节点,就改变布尔值为false.
2.复制的元素不包括添加在元素上的事件.
我们先来看下复制前的样式
下面是复制前的代码:
<body>
<!--div1-->
<div class="div1">
<p class="p1"></p>
</div>
<!--div2-->
<div class='div2'></div>
</body>
<script>
</script>
接下来开始将div1复制到div2中:
<body>
<div class="div1">
<p class="p1"></p>
</div>
<div class='div2'></div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
var div2 = document.getElementsByClassName('div2')[0]
var newDiv = div1.cloneNode(false)
div2.appendChild(newDiv)
</script>
此为布尔值是false的,div1中的P标签并没有被复制:
下面为将false改为true后的样式:
-- insertBefore -- 用来将一个节点插入到指定位置;
insertBefore要传两个值,第一个值为要添加的节点,第二个值为将新节点插到此节点的前面,第二个值可以填null,意思为将添加的节点插到当前元素的最后.
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
</script>
下面图片为添加前的样式:
下面我们开始添加代码了,此代码为在前面添加:
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
var p1 = document.getElementsByClassName('p1')[0]
var span1 = document.createElement('span')
div1.insertBefore(span1,p1)
</script>
此代码为在最后添加:
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
var span1 = document.createElement('span')
div1.insertBefore(span1,null)
</script>
-- removeChild -- 表示从元素中移除该子节点:
我们就用上图"添加后样式2"为例:
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
var p1 = document.getElementsByClassName('p1')[0]
div1.insertBefore(span1,null)
div1.removeChild(p1)
</script>
可以看到div1中的P标签已经移除了;
-- replaceChild -- 表示替换当前节点的某一个子节点:
还是以"添加后样式2"为例:
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
var p1 = document.getElementsByClassName('p1')[0]
var span1 = document.createElement('span')
var span2 = document.createElement('span')
div1.insertBefore(span1,null)
div1.replaceChild(span2,p1)
</script>
我们可以看到,P标签被替换成了span标签;
-- children -- 返回当前节点的所有元素子节点;
返回的是一组nodelist数据.
<body>
<div class="div1">
<p class="p1"></p>
<p class="p1"></p>
<p class="p1"></p>
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
for(var i = 0;i<div1.children.length;i++){
console.log(div1.children[i])
}
</script>
可以看到,四个P标签全部显示出来了;
-- append -- 向当前元素里面的最后添加一个或多个子节点
-- prepend -- 向当前元素里面的最前添加一个或多个子节点
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
var p1 = document.getElementsByClassName('p1')[0]
var span2 = document.createElement('span')
var div2 = document.createElement('div')
div1.prepend(span2)
div1.append(div2)
</script>
span2和div2都添加到"div1"中了;
添加多个子节点时,括号内用逗号分开即可: (span,div,img)
-- before -- 向当前节点前面添加一个或多个节点;
-- after -- 向当前节点后面添加一个或多个节点;
可以将标签节点和文本节点混合添加的,且添加的顺序和你写的代码样式有关;
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
var span1 = document.createElement('span')
var div2 = document.createElement('div')
div1.before(span1,"h1")
div1.after(div2,"h2")
div1.before("h3")
</script>
可以看到,子节点的添加方式和你写的代码样式是一样的;
-- replaceWith -- 将当前节点替换为其他节点;
<body>
<div class="div1">
<p class="p1"></p>
</div>
</body>
<script>
var div1 = document.getElementsByClassName('div1')[0]
var p1 = document.getElementsByClassName('p1')[0]
var span1 = document.createElement('span')
p1.replaceWith(span1)
</script>
可以看到,P标签已经替换为span标签了;
未完待续