這:如果頁面上有多個warningmessage元素,則document.getElementsByClassName('warningmessage').remove();
不起作用。在多個元素上使用remove()
我該如何刪除該類的所有元素?我必須使用for each
嗎?是不是有一個命令deleteall()?
感謝您的提示!
這:如果頁面上有多個warningmessage元素,則document.getElementsByClassName('warningmessage').remove();
不起作用。在多個元素上使用remove()
我該如何刪除該類的所有元素?我必須使用for each
嗎?是不是有一個命令deleteall()?
感謝您的提示!
用普通的JavaScript,你可以這樣做:
var nodes = document.getElementsByClassName('warningmessage');
for(var i = 0; i < nodes.length; i++){
nodes[i].parentNode.removeChild(nodes[i]);
}
所以,你首先會獲取節點上,您有興趣,後來遍歷並將其從父母身上移除。
可悲的是沒有forEach
方法NodeList
。但是,你可以這樣:
var nodes = document.getElementsByClassName('warningmessage');
[].forEach.call(nodes, function (node) {
node.parentNode.removeChild(node);
});
這將使用JQuery是超級簡單:
$('.warningmessage').remove();
但它並不難,當你做沒有。 getElementsByClassName可以返回項目的節點列表。所以你只需要遍歷列表並刪除每個項目:
var list = document.getElementsByClassName("warningmessage");
for(var i = list.length - 1; i >= 0; i--)
{
var n = list[i];
n.parentNode.removeChild(n);
}
您需要使用循環。以下代碼顯示瞭如何在「普通」javascript中編寫代碼。
var elements = document.getElementsByClassName('warningmessage'),
element;
while (element = elements[0]) {
element.parentNode.removeChild(element);
}
你可以試試這個
var elms= document.getElementsByClassName('warningmessage');
while(elms.length>0){
for(var i = 0; i < elms.length; i++){
elms[i].parentNode.removeChild(elms[i]);
}
}
我以前有這個問題,我在此算法結束。
function removeElement(target) {
if(target.hasOwnProperty('length')) {
for(i=0; i<target.length; i++) {
removeElement(target[i]);
}
} else {
target.parentNode.removeChild(target);
}
}
然後調用這樣的功能:
removeElement(document.getElementById('the-id'));
,或者如果你想刪除元素的HTML集合然後調用這樣的功能:
removeElement(document.getElementsByTagName('tag-name'));
是你使用任何框架?因爲在dom節點上沒有方法刪除? – sdepold
'.remove()'是jQuery語法,如果您使用的是jQuery,則可以執行'$('。warningmessage')。remove()'來移除所有實例。 –
不使用jquery。我怎麼會寫這個「正常」的JavaScript? – cmplieger