【问题标题】:innerHtml not working for nested div tagsinnerHtml 不适用于嵌套的 div 标签
【发布时间】:2011-10-10 16:51:52
【问题描述】:

我无法为嵌套在其他 div 标签中的 div 标签替换 .innerHtml。我使用 firebug 来确保 getElementById() 正常工作。

<div class="a">
<div class="b"><a href="myUrl"><div id="hello"></div></a></div>
</div>

在我使用的 javascript 代码中:

document.getElementById("hello").innerHTML = "hello world";

使用萤火虫,我已经验证了“你好” div 被拾取(也就是说,它不为空)。但是字符串“hello world”没有出现。 请帮忙。 谢谢。

【问题讨论】:

  • 不要将 div 容器放在 a 元素内。你的 DOM 应该是这样的:。它与您遇到的问题无关,但您因此而受到抨击。
  • 我正在使用innerHTML。这是一个错字。
  • Here is a jsfiddle 表明您的代码已经工作。我会开始在页面某处寻找另一个“hello”id。
  • 如果您说这只是问题中的拼写错误,但仍然无法正常工作,则说明您的 JavaScript 无法执行。一个错误,也许。这完美无缺 (here)。
  • @Amaan 在 HTML5 中不再适用。 HTML5中&lt;a&gt;标签的内容模型是transparent,这意味着它从一个不透明的父元素继承了它的内容模型

标签: javascript html innerhtml getelementbyid


【解决方案1】:

使用innerHTML 而不是innerHtml。注意大写。

另外,IE 也支持innerText

【讨论】:

    【解决方案2】:

    您提供的示例对我有用...所以,我认为您应该确保在 DOM 中创建元素后执行脚本。

    例如,将脚本元素放在要添加内容的 div 之后。 因此,如果这解决了问题,那么您应该向窗口的 onload 事件添加一个事件侦听器,该事件将运行所有脚本。

    正如 Amaan 所说,不要将 div 元素放在 a 元素内。