innerHTML在IE中无法正常运行

问题描述

| 我正在尝试使用innerHTML填充div,该div在除IE(特别是在8和9下进行测试)之外的所有浏览器上都可以正常工作。我可以找到许多有关此主题的信息,但没有简单的答案。如果我在文本中没有任何标签,但有时却没有,这似乎有时会起作用。谁能帮助我了解问题及其潜在的解决方法
<html>
<body>

    The following Box should contain text populated with innerHTML,but doesn\'t in IE
    <p id=\"inner\" style=\"width:250px; height: 100px;  margin: 20px auto; background-color: #fff; border:5px solid orange; padding:7px; text-align:left; }\"></p>

    <script type=\"text/javascript\">
        var txt = \"<h1>Just a quick test!</h1>\"  
        var inner = document.getElementById(\"inner\");
        inner.innerHTML=txt;
    </script>

</body>
</html>
    

解决方法

        
inner = document.getElementById(\"inner\");
出现错误-如果将其更改为
var inner = document.getElementById(\"inner\");
它将起作用。 IE由于元素上的ID会自动创建一个全局
inner
变量-它似乎确实不喜欢您尝试为其分配内容。     ,        按F12键以获取脚本调试器并查看脚本错误。例如,您可能会考虑使用您已经使用的变量,而不是尝试分配您希望的新变量\“ inner \”(它实际上映射到ID为\“ inner \”的文档元素)。实际宣布? 修复这些问题之后,也许您想将脚本延迟到OnLoad触发之前?     ,        首先,您的html不完整。该页面没有标题(
<head>
)。 其次,精确编程,并尽可能使用逗号和分号。在代码中的变量声明之后没有标点符号。这样的事情可能会破坏脚本。在这种情况下,
window[inner]
(由浏览器创建的内部变量)与您的\'inner \'变量之间存在冲突。缺少逗号/额外的var声明行使javascript解释器感到困惑,该解释器试图在解释时插入分号。这种“分号插入”被视为javascript的主要缺陷之一(请参阅链接@bottom),但可以由程序员规避以始终进行自己的分号插入。 以更高的精度,您的脚本如下所示:
var txt = \"Just a quick test!\",//use a comma here
           inner = document.getElementById(\"inner\"); 
           //use a semicolon to end var declaration block
inner.innerHTML = txt; //always end statements with semicolon
要么
var txt = \"Just a quick test!\";
var inner = document.getElementById(\"inner\");
那将在IE中工作。 进一步阅读 进一步阅读(2)     ,        尝试使用innerHTML将HTML代码添加到P标签中时,IE炸弹爆炸。 用DIV替换P标签即可解决此问题。