为了账号安全,请及时绑定邮箱和手机立即绑定

setTimeout() ,setInterval()他们有什么区别?

在十四行用setTimeout()调用和用setInterval()调用函数为什么会不一样。setTimeout() ,setInterval()他们有什么区别?

正在回答

8 回答

我给你注释一下JS代码吧。

  var num=0;              //定义变量num并赋值为0
  function startCount() {   //定义函数startCount
    document.getElementById('count').value=num;    //获取id为count并赋值为num
    num=num+1;        //这个就不用解释了吧
    setTimeout("startCount()",1000);  //setTimeout间隔1000毫秒去调用startCount函数

  }
   setInterval("startCount()",1000); //setInterval间隔1000毫秒去调用startCount函数


其实你用setInterval方法的话,里面的setTimeout方法可以去掉的。因为setInterval方法会不断的去调用startCount函数。


0 回复 有任何疑惑可以回复我~
#1

么么哒小七 提问者

好哒,你的注释我明白了,非常感谢你。但按照我的代码来说,它每一秒被执行两次,本来应该每次加2的,为什么每次加的会递增呢?为什么会出现0,2,5,9,14,20这样增加呢?
2015-04-28 回复 有任何疑惑可以回复我~
#2

Perona 回复 么么哒小七 提问者

首先第一秒的是2,这个很好理解吧。第二秒的时候函数里面的code 自身再次调用 setTimeout(),也就是说函数里面是2+1,外面的setInterval()原本是2的,那么它调用函数里面的就是2+3=5。第三秒的时候函数里面的code 自身再次调用 setTimeout()就是3+1=4,外面的setInterval()再次调用函数就是5+4=9。以此类推~~~~反正你只要记住函数外面和里面的code都在不断计算就可以啦。而且setInterval()递增的量并不是1,而是startCount()这个函数。
2015-04-28 回复 有任何疑惑可以回复我~
#3

Perona 回复 么么哒小七 提问者

错了,应该说setInterval()递增的量除了1还有startCount()这个函数。
2015-04-28 回复 有任何疑惑可以回复我~
#4

简单就会快乐

46546545645
2015-05-02 回复 有任何疑惑可以回复我~
查看1条回复

...

0 回复 有任何疑惑可以回复我~

??????????????????????????

0 回复 有任何疑惑可以回复我~

最佳答案设错了,请不懂的同学看下面的解释哈。


0 回复 有任何疑惑可以回复我~

别人都回复了你那么多的东西,你都不把别人的回复设置为正确答案。

0 回复 有任何疑惑可以回复我~
#1

么么哒小七 提问者

我第一次提问,不懂规则,还望原谅。
2015-04-28 回复 有任何疑惑可以回复我~
#2

Perona 回复 么么哒小七 提问者

你们都萌萌哒~~~啦啦啦啦啦
2015-04-28 回复 有任何疑惑可以回复我~
#3

简单就会快乐

4564564654
2015-05-02 回复 有任何疑惑可以回复我~
#4

简单就会快乐

回复 简单就23
2015-05-02 回复 有任何疑惑可以回复我~
#5

简单就会快乐

回复 简单就会123
2015-05-02 回复 有任何疑惑可以回复我~
#6

简单就会快乐 回复 简单就会快乐

456
2015-05-02 回复 有任何疑惑可以回复我~
查看3条回复

说错了。以这个为准。第一秒函数里面计数1,外面函数计数除了本身计数1还调用函数,所以1+1=2。第二秒的时候函数里面的code 自身再次调用 setTimeout(),也就是说函数里面是1+1=2,外面的setInterval()原本是2的,自增量是1,调用函数2,即2+1+2=5。第三秒的时候函数里面的code 自身再次调用 setTimeout()就是2+1=3,外面的setInterval()原本的值加自增量1,再加调用函数就是5+1+3=9。以此类推~~~~反正你只要记住函数外面和里面的code都在不断计算就可以啦。setInterval()递增的量除了1还有startCount()这个函数。

0 回复 有任何疑惑可以回复我~
#1

么么哒小七 提问者

你解释的太棒了,我懂了,哈哈。谢了。
2015-04-28 回复 有任何疑惑可以回复我~

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>
<script type="text/javascript">
  var num=0;
  function startCount() {
    document.getElementById('count').value=num;
    num=num+1;
      setTimeout("startCount()",1000);
  }
   setInterval("startCount()",1000);
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>

0 回复 有任何疑惑可以回复我~

setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。


1 回复 有任何疑惑可以回复我~
#1

么么哒小七 提问者

我明白了谢谢大神,但是您能为我解释一下下面这个代码运行的原因么?
2015-04-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

setTimeout() ,setInterval()他们有什么区别?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信