2012-02-10 9 views
1

HTMLに埋め込みタグが存在するかどうかを確認する方法を教えてください。 私はjavascriptのチェックembedタグが存在するjavascript

soundEmbed = document.createElement("embed"); 
    soundEmbed.setAttribute("src", "notify.wav"); 
    soundEmbed.setAttribute("hidden", true); 
    soundEmbed.setAttribute("autostart", true); 
    soundEmbed.setAttribute("loop", false); 
    document.body.appendChild(soundEmbed); 

を通じてこのタグを作成しましたが、私は自動リフレッシュとのappendChildを使用しておりますので、それはそれを更新するたびに、追加のサウンドを作成します。

appendChildを使用して、私は多くの埋め込みタグを持っていると思います。それは私が多分追加の音の原因と思うものです。

答えて

3

追加する前にsoundEmbed.id = "__soundEmbed";を追加してください。次に、全体を囲みます。

if(!document.getElementById("__soundEmbed")) { 
    soundEmbed = ......; 
    ...... 
} 
0

あなたのHTMLには含まれませんが、DOMツリーにあります(HTMLが解析された後にDOMに追加されるため、HTMLは見られません)。非常に簡単な解決策は、まだ作成されているかどうかを示すグローバル変数を維持することです。falseに初期化し、embed要素を作成するときにはtrueに設定してください。

1

あなたが要素にIDを与えると、最初にこれをチェックすることができ:

if (!document.getElementById('someId')) { 
    var soundEmbed = document.createElement("embed"); 
    soundEmbed.setAttribute("src", "notify.wav"); 
    soundEmbed.setAttribute("hidden", true); 
    soundEmbed.setAttribute("autostart", true); 
    soundEmbed.setAttribute("loop", false); 
    soundEmbed.setAttribute("id", 'someId'); 
    document.body.appendChild(soundEmbed); 
} 

または代わりに、フラグ(soundEmbedが他の場所で定義されているように見えるので、我々はそれにfalseyチェックを使用することができます)に対してチェック:

if (!soundEmbed) { 
    soundEmbed = document.createElement("embed"); 
    soundEmbed.setAttribute("src", "notify.wav"); 
    soundEmbed.setAttribute("hidden", true); 
    soundEmbed.setAttribute("autostart", true); 
    soundEmbed.setAttribute("loop", false); 
    document.body.appendChild(soundEmbed); 
} 
+0

要素を削除できますか?次に子供を追加しますか?私は理由のためにこの方法が必要です。サンプル: 'if(document.getElementById( 'soundId'))document.body.removeChild( 'soundId');'これは正しいですか? –

+0

soundEmbedが存在する場合、どのようにサウンドを再生できますか? soundEmbedがない場合のみ再生されます –

関連する問題