【问题标题】:I need to write window.onload=function() for Javascript to work我需要为 Javascript 编写 window.onload=function() 才能工作
【发布时间】:2014-12-23 10:15:23
【问题描述】:

我遇到了一个荒谬的问题。我需要写

window.onload=function(){ 
//Javascript Code
 }

使 javascript 工作。

例如我的以下代码不起作用:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <title>JS test</title>
        <script type="text/javascript">
      var hours;
      var minutes;
      var seconds;
      var temp;

      function countdown() {
      seconds = document.getElementById('countdown').innerHTML;
      splitt = seconds.split(":");
      hours = parseInt(splitt[0], 10);
      minutes = parseInt(splitt[1], 10);
      seconds = parseInt(splitt[2], 10);

      if (hours == 0 && minutes == 0 && seconds == 0) {
      temp = document.getElementById('countdown');
      temp.innerHTML = "all done, bye bye";
      return;
      }

      if (minutes == 0 && seconds == 0) {
      hours--;
      minutes=60;
      }
      if (seconds == 0) {
      minutes--;
      seconds=60;
      } 
      seconds--;
      temp = document.getElementById('countdown');
      temp.innerHTML = hours+":"+minutes+":"+seconds;
      timeoutMyOswego = setTimeout(countdown, 1000);
      } 

      countdown();
      </script></head>

  <body>

      <div id="countdown">
        47:3:24
      </div>

  </body>
</html>

但这个可以:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <title>JS test</title>
        <script type="text/javascript">

window.onload=function(){
var hours;
      var minutes;
      var seconds;
      var temp;

      function countdown() {
      seconds = document.getElementById('countdown').innerHTML;
      splitt = seconds.split(":");
      hours = parseInt(splitt[0], 10);
      minutes = parseInt(splitt[1], 10);
      seconds = parseInt(splitt[2], 10);

      if (hours == 0 && minutes == 0 && seconds == 0) {
      temp = document.getElementById('countdown');
      temp.innerHTML = "all done, bye bye";
      return;
      }

      if (minutes == 0 && seconds == 0) {
      hours--;
      minutes=60;
      }
      if (seconds == 0) {
      minutes--;
      seconds=60;
      } 
      seconds--;
      temp = document.getElementById('countdown');
      temp.innerHTML = hours+":"+minutes+":"+seconds;
      timeoutMyOswego = setTimeout(countdown, 1000);
      } 

      countdown();
}


      </script></head>

  <body>

      <div id="countdown">
        47:3:24
      </div>

  </body>
</html>

我无法弄清楚为什么会发生这种情况以及为什么我需要编写 window.onload=function() 让我的 javascript 每次都能正常工作?

谢谢。

【问题讨论】:

    标签: javascript function window onload


    【解决方案1】:
    seconds = document.getElementById('countdown')
    

    在将元素放入 DOM 之前,您无法从 DOM 中获取元素。

    脚本在加载正文之前运行。

    在正文中添加到 DOM 的任何内容都不会被脚本使用。

    在文档加载完成后运行脚本可避免该问题。

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2012-07-13
      • 2010-12-26
      • 1970-01-01
      • 2023-01-02
      相关资源
      最近更新 更多