6

this:document.getElementsByClassName('warningmessage').remove();ページに複数の warningmessage 要素がある場合は機能しません。

そのクラスのすべての要素を削除するにはどうすればよいですか? を使用する必要がありfor eachますか? deleteall() するコマンドはありませんか?

ヒントをありがとう!

4

5 に答える 5

9

プレーンな 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);
});
于 2012-09-19T06:11:45.227 に答える
8

ループを使用する必要があります。以下のコードは、「通常の」JavaScript での記述方法を示しています。

var elements = document.getElementsByClassName('warningmessage'),
    element;
while (element = elements[0]) {
  element.parentNode.removeChild(element);
}

動作デモ。 </p>

于 2012-09-19T06:11:24.523 に答える
3

これは、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);
}
于 2012-09-19T06:09:44.410 に答える
2

あなたはこれを試すことができます

var elms= document.getElementsByClassName('warningmessage');
while(elms.length>0){
   for(var i = 0; i < elms.length; i++){
      elms[i].parentNode.removeChild(elms[i]);
   }
}​

http://jsfiddle.net/gBwjA/

于 2012-09-19T06:25:50.950 に答える
0

以前にこの問題があり、このアルゴリズムに行き着きました。

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'));
于 2015-06-10T08:04:41.293 に答える