settimeout javascript没有正常运行?

时间:2014-04-15 14:03:39

标签: javascript settimeout

我正在使用以下代码向用户显示一些文本。

基本上我需要展示的是:

1 2 3 4

但是此代码显示,

1 4

这是代码:

    <script>
    function myFunction() {
    setTimeout(function() {
      document.getElementById('p').innerHTML = "1";
    }, 2000);

    setTimeout(function() {
      document.getElementById('p').innerHTML = "2";
    }, 4000);

    setTimeout(function() {
      document.getElementById('p').innerHTML = "3";
    }, 4000);

    setTimeout(function() {
      document.getElementById('p').innerHTML = "4";
    }, 4000);
    };
    </script>


<p id="p"></p>

<input onclick="myFunction()" type="submit" />

有谁知道为什么会这样?

提前致谢。

3 个答案:

答案 0 :(得分:7)

因为

setTimeout(function() {
  document.getElementById('p').innerHTML = "2";
}, 4000);

setTimeout(function() {
  document.getElementById('p').innerHTML = "3";
}, 4000);

setTimeout(function() {
  document.getElementById('p').innerHTML = "4";
}, 4000);
};

正在编辑相同的元素 所以你只看到最后一次操作的结果:4


setTimeout()方法在指定的毫秒数后调用函数或计算表达式。 在你的情况下,时间是相同的,所以所有都在同一时间执行。

在它们之间设置一些间隔。

答案 1 :(得分:3)

setTimeout无法计算从上一个setTimeout完成的时间,但是从执行setTimeout语句开始计算时间。

因此,setTimeout23的所有4语句几乎同时开始等待4秒。

答案 2 :(得分:1)

您正在快速连续编辑相同的元素,如果您为setTimeout设置不同的值,例如1000,2000,3000,4000,您会看到文本从1更改为2到3到4,间隔为1秒( (每次更改之间)。