<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
для получения HTMLCollection (не массива) тегов h1, которые активны.
Когда элемент удаляется, элементы соответственно обновляют свои индексы, что означает, что вы должны удалить каждый элемент с последней позиции на первую.
Javascript-решение:
var h1Elems = document.getElementsByTagName('h1');
for(var i = h1Elems.length - 1; i >= 0; i--){
h1Elems[i].parentElement.removeChild(h1Elems[i]);
}
Посмотрите, как этот код работает в этом jsfiddle
while (h1Elems.length) h1Elems[0].remove();
.
- person ; 20.11.2016
Вы можете использовать селектор CSS.
Вы можете сделать это с помощью jQuery или VanillaJS. Например, вот мой код для VanillaJS.
var headers = document.querySelectorAll('h1');
headers.forEach(function(h) { h.remove(); });
Это эффективно удалит заголовки из DOM.
forEach
определяется в результате querySelectorAll
.
- person ; 20.11.2016
Мы можем создать свой собственный 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
?
- person ; 20.11.2016
if(h.parentNode)
результат false
, но не смог. Я только что отредактировал свой ответ, в том числе исправив, как мы должны обрабатывать возврат NodeList с помощью querySelectorAll
- person RizkiDPrast; 20.11.2016