从DOM中删除元素的关闭按钮,仅在第二次单击时起作用。
这是按钮的HTML部分:即closeBtn。
function removeHeader() {
var list = document.getElementById("main");
list.removeChild(list.childNodes[0]);
}

<div id="main">
<div class="nanoSaturnBanner">
<p>teteasdasdasdsadasds sad asdasdasdasdasdas</p>
<div class="banner-buttons">
<label class="showme">Ads by Google</label>
<a class="infoLink" href="https://support.google.com/adsense/#topic=3373519" target="_blank">
<i class="fas fa-info-circle"></i>
</a>
<div class="closeBtn" onclick="removeHeader()">
closeBtn
</div>
</div>
</div>
</div>
&#13;
答案 0 :(得分:3)
您应该使用,因为
list.childNodes[1]
代表的list.childNodes[0]
节点是#text
之后的空格。因此,在第一次单击时,它正在删除该节点,在第二次单击时,它正在删除具有<div id="main">
的实际节点
<div class="nanoSaturnBanner">
function removeHeader() {
var list = document.getElementById("main");
list.removeChild(list.childNodes[1]);
}
注意:元素内的空格被视为文本,文本被视为节点。注释也被视为节点。
答案 1 :(得分:2)
如同childNodes
获取无元素节点,例如 text 和 comment ,请使用例如children
代替得到第一个实际元素。
请注意,除此之外,无论有多少 “无元素节点” ,您都可以确保获取元素。
Stack snippet
function removeHeader() {
var list = document.getElementById("main");
list.removeChild(list.children[0]);
}
<div id="main">
<div class="nanoSaturnBanner">
<p>teteasdasdasdsadasds sad asdasdasdasdasdas</p>
<div class="banner-buttons">
<label class="showme">Ads by Google</label>
<a class="infoLink" href="https://support.google.com/adsense/#topic=3373519" target="_blank">
<i class="fas fa-info-circle"></i>
</a>
<div class="closeBtn" onclick="removeHeader()">
<i class="far fa-window-close">close</i>
</div>
</div>
</div>
答案 2 :(得分:0)
function removeHeader() {
var list = document.getElementById("main");
list.remove(list.childNodes[0]); // replacing removeChild with remove worked
}
检查fiddle。