为啥 .html 工作而不是 innerHTML 或 appendChild
Posted
技术标签:
【中文标题】为啥 .html 工作而不是 innerHTML 或 appendChild【英文标题】:Why does .html work and not innerHTML or appendChild为什么 .html 工作而不是 innerHTML 或 appendChild 【发布时间】:2010-12-23 08:16:47 【问题描述】:我正在尝试向 div 添加 ajax 响应(它是带有表格、表单等的 html 代码)。
在 FF innerHTML
中完美运行,但在 IE 中它给了我一个未知错误。
我尝试了很多东西,但只有在我添加 jQuery 并在我想要插入代码的 div 上运行 .html
方法时才能正常工作。
有人愿意解释为什么这有效,而不是简单的innerHTML
?我尝试查看 .html()
代码,但我想我不是 JS 方面的专家,因为我不明白它在做什么。
【问题讨论】:
【参考方案1】:IE 记录了几个(pre | table (thead, tbody, tr, tfoot) | div | select).innerHTML 错误。
因此,像 jQuery 这样的库通过在 IE 需要的地方应用变通方法,为您抽象出这些错误。
至于你的具体错误......没有看到代码很难说。
在 pre's、某些 div's、select's 上设置 .innerHTML
(如果确实失败,将静默失败)但在某些表格元素上设置 .innerHTML
(在某些版本的 IE 中)会实际上抛出一个错误/异常。
注意:设置 div 的 .innerHTML
的问题在条件上非常具体,仅在 IE6 和 IE7 中出现。
【讨论】:
【参考方案2】:IE 对从 javascript 更改 <table>s
很挑剔。如果我没有将表格指定到最后一个细节,包括<tbody>
标签,我之前遇到过麻烦。
【讨论】:
【参考方案3】:只需使用 jQuery,忘记所有可怕的跨浏览器问题 - 你不会回头!
【讨论】:
【参考方案4】:我每天都有同样的问题。尝试使用 .innerText 代替 .innerHTML,这将解决您的问题。答案是 Javascript 在 IE 和 FF 中的解析不同。
【讨论】:
如果内容确实是 HTML,则设置 .innerText 将不起作用。 @AntonioCS 已经在使用 jQuery,因此解决了这个问题 - 他只是不确定 IE 失败的确切原因。以上是关于为啥 .html 工作而不是 innerHTML 或 appendChild的主要内容,如果未能解决你的问题,请参考以下文章
为啥 innerHTML 和 textContent 给出不同的结果?