【问题标题】:javascript in html head, innerhtml not working?html头中的javascript,innerhtml不起作用?
【发布时间】:2012-04-08 14:29:08
【问题描述】:
 <html>
 <head>
 <script type="text/javascript">
 document.getElementById("eee").innerHTML = "7777";
 </script>


 </head>
 <body>
 <p id="eee">aa</p>

 </body>
 </html>

为什么innerHTML 在头部不起作用,但在正文中起作用?请原谅初学者的问题,但我上次使用 javascript 一年前这根本不是问题。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你想要更多这样的东西。您必须等待整个文档加载完毕才能保证对其进行修改。如下所示

     <html>
    <head>
     <script type="text/javascript">
        window.onload = function() {document.getElementById("eee").innerHTML = "7777";};
     </script>
     </head>
     <body>
     <p id="eee">aa</p>
     </body>
     </html>
    

    这是工作的jsfiddle

    【讨论】:

    • 但是 jQuery 是从哪里来的呢?
    • 我已经纠正了这个问题,因为 jquery 没有像我认为的那样工作。我现在正在研究这个:)
    【解决方案2】:

    在 dom 准备好之前,javascript 正在运行。使用事件DOMContentLoaded 在标头中执行此操作。对于旧版浏览器,您应该使用onload 事件。

    http://jsfiddle.net/r7VYz/1/

     <html>
     <head>
     <script type="text/javascript">
     document.addEventListener('DOMContentLoaded', function () {
        document.getElementById("eee").innerHTML = "7777"; 
     }, false);
    
     </script>
    
    
     </head>
     <body>
     <p id="eee">aa</p>
    
     </body>
     </html>​
    

    【讨论】:

      【解决方案3】:

      您需要等待 HTML 文档加载完毕才能对其进行操作。

      <script type="text/javascript">
        window.onload = function() {
          document.getElementById("eee").innerHTML = "7777";
        };
      </script>
      

      请记住,脚本是按照它们在 HTML 文档中列出的顺序进行评估的,因此您的脚本会在浏览器处理“head”部分时运行。由于浏览器尚未解析“body”部分,因此它不知道任何 id 为“eee”的元素。

      但是,通过将函数分配给“window.onload”事件,您可以延迟内部 HTML 分配的执行,直到窗口完全加载所有资源并安全地操作文档。

      请注意,如果您的脚本位于正文部分,则在列出 id 为“eee”的元素后,脚本将无需等待窗口“加载”事件即可运行。

      【讨论】:

        【解决方案4】:

        这是因为您的脚本找不到该元素。当 DOM 已正确加载或仍在加载时,head 中的脚本首先加载。

        <p id="eee">aa</p>
        <!-- Use the script after the element, so that the script can find it -->
        <script type="text/javascript">
         document.getElementById("eee").innerHTML = "7777";
        </script>
        

        其他方法可能在窗口的onload事件上执行脚本

        window.onload = function() {
            document.getElementById("eee").innerHTML = "7777";
        };
        

        【讨论】:

        • 我希望脚本在头部,而不是在 p 之后。
        • @Trevor,效率不高。你听说过 HTML5 BoilerPlate,他们坚持使用页面底部的脚本,以加快加载速度。所以,它是高效的。
        【解决方案5】:

        您需要确保文档已加载。

        检查此question 的答案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-03
          • 2023-03-12
          • 1970-01-01
          • 2012-04-18
          • 1970-01-01
          • 2016-08-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多