【问题标题】:setTimeout() and getElementById() don't work togethersetTimeout() 和 getElementById() 不能一起工作
【发布时间】:2016-11-23 18:54:34
【问题描述】:

我第一次这样做:

<script>
    function result2() {
        document.write("...");
    }
    function result1() {
        document.write("..");
        setTimeout(result2, 1000);
    }
    document.write(".");
    setTimeout(result1, 1000);
</script>
<div id="body"></div>

setTimeout() 在 100 次中有 99 次都不工作,所以我很惊讶地看到它工作,即使它在最后出现故障。但它并没有像我以前想要的那样工作,所以我将脚本重新编写了一点点:

<script>
    function result2() {
        document.getElementById("body").innerHTML = "...";
    }
    function result1() {
        document.getElementById("body").innerHTML = "..";
        setTimeout(result2, 1000);
    }
    document.getElementById("body").innerHTML = ".";
    setTimeout(result1, 1000);
</script>
<div id="body"></div>

但什么也没发生,它只是给了我一个空白页......所以我尝试了setInterval(),但在这里,它又没有用。所以请帮帮我,我该如何解决这个问题?

【问题讨论】:

  • 你创建另一个间隔的每个间隔......你没有像你的标题所说的那样超时......并且你不应该在页面加载后使用 document.write!
  • epascarello : 我不知道,对不起,我只是初学者!
  • gcampbell :这并不能真正回答我的问题...:|
  • "setTimeout() 在 100 次中有 99 次都不起作用" - 这是一个有趣的断言。

标签: javascript


【解决方案1】:

在正文标签的末尾添加你的脚本,它应该可以工作

function result2() {
   document.getElementById("body").innerHTML = "...";
    }

function result1() {
    document.getElementById("body").innerHTML = "..";
        setInterval(result2, 1000);
    }

 document.getElementById("body").innerHTML = ".";
    setInterval(result1, 1000);
&lt;div id="body"&gt;&lt;/div&gt;

【讨论】:

    【解决方案2】:

    问题是在执行代码时,DOM 中的元素不可用。您可以使用以下任何一种解决方案

    1. &lt;script&gt; 移动到&lt;body 的末尾,这样,当代码运行时,元素在DOM 中可用
    2. 将访问 DOM 元素的代码封装在 DOMContentLoaded 事件回调中

    <script>
        function result2() {
            document.getElementById("body").innerHTML = "...";
        }
    
        function result1() {
            document.getElementById("body").innerHTML = "..";
            setInterval(result2, 1000);
        }
    
        document.addEventListener('DOMContentLoaded', function() {
            document.getElementById("body").innerHTML = ".";
            setInterval(result1, 1000);
        });
    
    </script>
    <div id="body"></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多