1.父节点—parentNode
<div>
<p id="child">hello world</p>
</div>
<script>
let child = document.getElementById("child");
console.log(child.parentNode) //<div><p id="child">hello world</p></div>
</script>
1.1通过js实现点击删除/添加标签
<p><input type="text" placeholder="添加品牌" id="input"><button id="btn">添加</button></p>
<ul id="parent">
<li><span>小米</span><a href="#">删除</a></li>
<li><span>苹果</span><a href="#">删除</a></li>
<li><span>华为</span><a href="#">删除</a></li>
</ul>
<script>
var parent=document.getElementById("parent");
var input=document.getElementById("input");
var btn=document.getElementById("btn");
btn.onclick=function(){
var value=input.value;
var li=document.createElement("li");
var span=document.createElement("span");
span.innerHTML=value;
li.appendChild(span);
var a=document.createElement("a");
a.href="#";
a.innerHTML="删除"
li.appendChild(a);
parent.appendChild(li);
input.value=""
}
var deletes=document.getElementsByTagName("a");
for(var i=0;i<deletes.length;i++){
deletes[i].onclick=function(){
var parentNode=this.parentNode;
parentNode.style.display="none";
return false;//阻止跳转事件的执行
}
}
</script>
2.子节点childNode和children的区别
- childNodes是获取所有类型的子节点 不会区分文本和元素节点
- children只会获取元素节点
<div id="parent">
hello world
<p id="first">good</p>
<p>good</p>
<p>good</p>
</div>
<script>
/*
childNode (7) -->获取子节点 不会区分文本和元素节点
children(4)
*/
var parent=document.getElementById("parent")
var childs=parent.children;
var first=document.getElementById("first")
console.log(childs)
</script>
3.兄弟节点
nextSibling -->获取下一个兄弟节点
nextElementSibling -->获取下一个兄弟元素节点
<div id="parent">
hello world
<p id="first">good</p>
<p>good</p>
<p>good</p>
</div>
<script>
var parent=document.getElementById("parent")
var childs=parent.children;
var first=document.getElementById("first")
console.log(first.nextSibling) //#text
console.log(first.nextElementSibling) //<p>good</p>
</script>
4.第一个/最后一个节点/元素节点
firstChild //包含所有类型的节点
firstElementChild //第一个元素节点
lastChild //所有类型的节点
lastElementChild //最后一个元素节点
5.节点分类