【问题标题】:AppendChild (Javascript) and Internet ExplorerAppendChild (Javascript) 和 Internet Explorer
【发布时间】:2013-08-13 08:17:12
【问题描述】:

作为一名学生和 Web 开发的新手,我在 Javascript 中遇到了以下看似奇怪的问题 - 但仅限于 IE(确切地说是 IE9;尚未尝试 IE10)。在 Firefox 中,该脚本可以正常工作。

代码是这样的:

item = document.createElement('li'); alert("alert1");
message = document.createTextNode("Hallo"); alert("alert2");
item.appendChild(message); alert("alert3");    

在 IE 中,会显示 alert1 和 alert2,但不会显示 alert3。换句话说,IE9 在上面的第三个语句(appendChild)上阻塞,并且永远不会到达 alert3。确实很奇怪。

使用 Google,我发现 IE 中的 appendChild 存在已知问题(至少在早期版本中)。但是,如上所述,所描述的问题或建议的解决方法似乎都与我的简单代码不匹配。

提前感谢您的任何建议。

编辑添加:控制台给出以下错误消息:“对象不支持属性或方法 appendChild”。

【问题讨论】:

  • IE 旨在让它变得困难和烦人。尝试设置 li 的 innerHTML。
  • 我无法用一个简单的小提琴重现这个问题(在 IE9 中测试):jsfiddle.net/RnwPG
  • @Teemu 很有趣。我仍然希望上面的 item = docu... 行覆盖 window.item 的任何内容

标签: javascript appendchild textnode


【解决方案1】:

item 是 IE 的 window 对象中的原生方法。

您可以重命名变量,或正确声明它:

var item = document.createElement('li');

【讨论】:

  • 是的,解决了,太好了!显然我不应该在这里说谢谢,但我还是要说:谢谢。
  • @Holland 不客气。感谢总是很高兴,但最好的感谢是答案中的绿色复选标记; )。