Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
settimeout javascript不';你不能正常工作吗?_Javascript_Settimeout - Fatal编程技术网

settimeout javascript不';你不能正常工作吗?

settimeout javascript不';你不能正常工作吗?,javascript,settimeout,Javascript,Settimeout,我使用以下代码向用户显示一些文本 基本上,我需要展示的是: 一, 2. 3. 四, 但是这个代码显示 一, 四, 代码如下: <script> function myFunction() { setTimeout(function() { document.getElementById('p').innerHTML = "1"; }, 2000); setTimeout(function() { document.ge

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

基本上,我需要展示的是:

一, 2. 3. 四,

但是这个代码显示

一, 四,

代码如下:

    <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" />

函数myFunction(){
setTimeout(函数(){
document.getElementById('p').innerHTML=“1”;
}, 2000);
setTimeout(函数(){
document.getElementById('p').innerHTML=“2”;
}, 4000);
setTimeout(函数(){
document.getElementById('p').innerHTML=“3”;
}, 4000);
setTimeout(函数(){
document.getElementById('p').innerHTML=“4”;
}, 4000);
};

有人知道为什么会这样吗

提前谢谢

因为

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
不计算从上一个
setTimeout
结束算起的时间,而是从执行
setTimeout
语句算起的时间


因此,所有带有
2
3
4
setTimeout
语句几乎同时开始等待4秒。

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

我不得不否决这一点,因为只要阅读代码,问题就显而易见了。这是不干燥的危险,复制和粘贴编解码器效果很好。您的实现是错误的。你在一毫秒内将
'p'
更改了3次,变成了2,3,4。我喜欢这样的标题问题,它们指责语言而不是代码编写者。所有setTimeout调用都是在大致相同的时间启动的。因此,打印2和3的文件将被执行,但与打印4的文件同时执行。@SCRIPTONITE,好吧,谢谢你的否决权和保守“隐藏的秘密”,而其他人只是告诉我哪里出了问题!我之所以感到困惑,是因为我认为
setTimeout
类似于PHP中的
sleep()
函数。我将在6分钟内接受这个答案。请在比较两种不同语言的功能之前阅读手册。@user3454730提示是异步回调。如果对setTimeout的调用与PHP的sleep一样是同步的,那么就不需要回调。同一范围内的下一句话就足够了。正如Ultra所说,你不应该基于完全不相关的假设来假设这种语言的行为experience@SCRIPTONITE,我是唯一一个犯错的人吗!?我相信这不是一成不变的,任何人都可以对他们想要的任何东西做出假设,如果他们错了,那么他们就是错的!我只是不明白为什么人们如此渴望贬低别人!!我无法理解。一次又一次。