检查嵌入标签存在javascript

时间:2012-02-10 16:28:50

标签: javascript tags embed append element

如何检查我的html中是否存在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);

但由于我使用autorefresh和appendChild,每次刷新它都会产生额外的声音。

使用appendChild,我想我有很多嵌入式标签。这就是我认为可能是附加声音的原因。

3 个答案:

答案 0 :(得分:3)

在追加之前添加soundEmbed.id = "__soundEmbed";。然后,用以下内容包围整个事物:

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

答案 1 :(得分: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);
}

答案 2 :(得分:0)

它不在您的HTML中,但它将在DOM树中(您在解析HTML后将其添加到DOM中,因此它永远不会看到任何HTML)。一个超级简单的解决方案是只维护一个全局变量,告诉您它是否已经创建 - 只需将其初始化为false,并在创建true时将其设置为embed } element。