0

私はコードをもっている:

<ul class='mates'>
  <li class='m' id='1'>Jakub</li>
  <li class='f' id='2'>Vinnie</li>
  <li class='m' id='3'>David</li>
</ul>

このスクリプトは、ユーザーの入力に従って、「li」要素の 1 つを選択します。

<script>
var mates = document.getElementsByClassName('mates')[0];
for (var i=0; i< mates.childNodes.length; i++){
    if(mates.children[i].innerHTML == 'Vinnie') alert("Got you! ID "+mates.children[i].id)
}
</script>

そして、この要素を削除する必要があります:

<script>
var mates = document.getElementsByClassName('mates')[0];
for (var i=0; i< mates.childNodes.length; i++){
    if(mates.children[i].innerHTML == 'Vinnie') {
        alert("Got you! ID "+mates.children[i].id);

        parent = document.getElementsByClassName('mates');
        mateToDelete = mates.children[i];

        parent.removeChild(mateToDelete);
    }
}
</script>

これは私がいくつかの異なる方法で試したものですが、「未定義のメソッド 'removeChild'を呼び出すことはできません」など、常にエラーが発生しました。何か案は?

4

4 に答える 4

1

parentその変数は必要ありません。これを使用して削除します:

mates.removeChild(mateToDelete);

フィドル: http://jsfiddle.net/3XeM5/2/

また、for ループを使用するように変更しました。

for (var i=0; i< mates.children.length; i++){ 

この ( children.length) の長さは 3、 の長さchildNodesは 7 なので、何も見つからない場合はループが壊れます。

編集: 特定の要素の複数の反復を削除するbreak;場合は、if ロジックの を削除します。最初だけを探している場合は、break.

于 2013-05-23T16:14:25.543 に答える
0

これを使って:

mates.removeChild(mates.children[i]);

例: http://jsfiddle.net/t9nCT/1/

于 2013-05-23T16:13:46.310 に答える