【问题标题】:Javascript appendChild adds an element to the DOM twice?Javascript appendChild 两次向 DOM 添加一个元素?
【发布时间】:2015-10-05 13:28:24
【问题描述】:

我有这段代码(TH 是我的表头 DOM 元素):

var typeIndicator = document.createElement('span');
typeIndicator.innerText = "A";
TH.appendChild(typeIndicator);

发生的情况是它附加了 2 个 <span> 元素而不是一个。以前有人遇到过这个问题吗?

【问题讨论】:

  • 检查使用您显示的代码的代码;这里没有错。
  • 这不是完整的代码,添加完整的代码
  • 如何调用这段代码。问题出在其他地方。我的猜测是您以某种方式多次绑定事件处理程序。
  • 示例代码既不完整也不可验证。 How to create a MCVE

标签: javascript dom appendchild


【解决方案1】:

大多数情况下,双重或多重事件触发意味着您在代码中的某处不止一次地分配了同一个事件侦听器。

首先检查你的循环(如果有的话),然后我可以建议你在你的 sn-p 上方放置一个debugger; 语句并使用浏览器的开发工具调试程序流。

P.S.:如果我只有足够的声誉,我会发表评论而不是回答。如果您可以请在您的 sn-p 中添加一些上下文(例如一些更封闭的代码,甚至尝试在 jsFiddle 中重现您的问题)我也许可以扩展我的答案。

【讨论】:

  • 感谢您的迅速回复!我发现了问题:该函数被调用了两次 :( 现在我正在寻找一种方法来检查 TH 节点是否有一个类型为“span”的子节点,以便在执行代码块之前作为额外的检查。
  • @bitstream 我可能会将您重定向到这个问题:How to check if element exists in the visible DOM? 但如果您对项目没有任何特定要求,我建议您考虑使用像 jQuery 这样的框架。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 2011-07-29
  • 2010-11-10
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多