2017-12-24 6 views
-1

私は飛行機射撃ゲームを作っています。弾丸が接続されるたびに、私の爆発画像で飾られたクラスでdivをIDでdivにプッシュしています。問題は、私がヒットし、すぐに別のヒットを得ることができない場合、HTMLがクリアされないため、私の爆発は画面上にとどまります。私はいくつかの研究を行い、基本的に言われているwhileループを使用するかどうかを考えました。IDを持つdivには最初の子があり、その子を削除します。しかしwhileループをdivに渡すことが可能かどうかはわかりませんが、IDを持つdivはそれほど少なくありません。「while」ループを使用して、純粋なJavaScriptで特定のHTMLタグをターゲットにすることはできますか?

私はこれを行うことはできますか?

while (div#explosion.firstChild) { 
div#explosion.removeChild(div#explosion.firstChild 
} 

実際のコードは必要ないと思っていますが、必要に応じて投稿することができます。

これは割り当てであるため、PURE JavaScriptである必要があります。いいえJQueryしてください。このような

+0

) '](https://developer.mozilla.org/en-US/docs/Web/API/Node/removeChild) –

+1

あなたはそれを漠然とすることができますが、JavaScriptのセレクタでDOMルックアップを実行することはできません。実際、「PURE JavaScript」という概念は、DOM操作を実行しようとしているときには意味がありません。言語自体の一部ではないブラウザで提供されるAPIを使用しないとできません。 – Pointy

+0

他の子供がいるかどうかによって異なります。 whileループは、コンテナを効果的に空にしない限り、各最初の子を絶えず削除してしまうでしょう。このために 'while'を使用する実用的な見地からは、多くの意味がありません – charlietfl

答えて

1

はいあなたが行うことができるもの:

var explosion = document.getElementById('explosion'); 
 
if (explosion) { 
 
    while (explosion.firstChild) { 
 
    explosion.firstChild.remove(); 
 
    } 
 
}

UPDATE

あなたはこれをすることができます後、第2子を保持する場合:

var explosion = document.getElementById('explosion'); 
 
if (explosion) { 
 
    var second = explosion.$childNodes[1] 
 
    while (explosion.firstChild) { 
 
    explosion.firstChild.remove(); 
 
    } 
 
    
 
    // Use `second` here. For example: 
 
    explosion.appendChild(second); // Put it back into the parent 
 
}
あなたは[ `childNode.remove()`](https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove)または[ `Node.removeChild(使用することができます

+0

最初の子を削除して残りの子を残したいのでない限り、 'explosion.innerHTML = ''' – charlietfl

+0

2番目の子を保ちたい –

+0

@AndreHolstonは代わりに 'if'です。 'while'は、その条件が真実でないか、またはブレークに遭遇するまでループし続けます – charlietfl

関連する問題