<body>
<p>dfg</p>
<h1>yoyo</h1>
<h1>yoyo2</h1>
<ul>
<li>somo</li>
</ul>
</body>
比如我想從身體中刪除僅H1。其他孩子應該停留
<body>
<p>dfg</p>
<h1>yoyo</h1>
<h1>yoyo2</h1>
<ul>
<li>somo</li>
</ul>
</body>
比如我想從身體中刪除僅H1。其他孩子應該停留
您可以使用getElementsByTagName
拿到H1標籤,這是現場的的HTMLCollection(不是數組)。
當一個元素被刪除時,元素會相應地更新它們的索引,這意味着您必須從最後一個位置移除每個元素到第一個位置。
JavaScript解決方案:
var h1Elems = document.getElementsByTagName('h1');
for(var i = h1Elems.length - 1; i >= 0; i--){
h1Elems[i].parentElement.removeChild(h1Elems[i]);
}
只要說'while(h1Elems.length)h1Elems [0] .remove();'會更簡單。 – 2016-11-20 03:05:56
這是一個優雅的選擇,謝謝。 – Pineda
您可以使用CSS選擇器。
你可以使用jQuery或VanillaJS。例如,這裏是我的VanillaJS代碼。
var headers = document.querySelectorAll('h1');
headers.forEach(function(h) { h.remove(); });
這將有效地從DOM中刪除標題。
是的,假設你在'querySelectorAll'的結果中定義'forEach'的環境中。 – 2016-11-20 03:02:45
如果您無法訪問它,則可以使用jQuery(例如)爲您執行此操作,也可以使用polyfill。 – gretro
我們可以創建自己的FN按標籤的可用性刪除節點。請在此回顧之一:
function rem(tag) {
var h = document.querySelectorAll(tag); //return NodeList not array
[].forEach.call(h,function(elm) {
elm.parentNode.removeChild(elm);
});
}
//passing tag to remove
rem('p');
<body>
<p>dfg</p>
<h1>yoyo</h1>
<h1>yoyo2</h1>
<ul>
<li>somo</li>
</ul>
</body>
爲什麼'if(h.parentNode'檢查是必需的?你確定'forEach'會對'querySelectorAll'的結果起作用嗎? – 2016-11-20 03:04:05
Thanks @torazaburo,我試了很多次以得到'if(h.parentNode )'return'false'但是失敗了。我剛剛編輯了我的答案,包括修復瞭如何通過'querySelectorAll'處理NodeList返回值。 – RizkiDPrast
的[刪除由id元素(http://stackoverflow.com/questions/3387427/remove-element-by-id) –
感謝可能的複製這個問題。我剛剛和我的十幾歲的兒子一起吃晚飯,並想知道同樣的事情。 :) – Paul
什麼樣的父親會刪除他的孩子?甚至沒有命名它們......這太難過了 – Myst