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

来自setTimeout()的一个问题

练习要求做一个简单的计时器,每隔一秒钟计时一次。因此采用如下代码:

var num=0;
  function startCount() {
    document.getElementById('count').value=num;
    num=num+1;
    setTimeout(startCount,1000);
  }
  /*此处不明*/setTimeout(startCount,1000);

这样一来就可以进行计时了。但是如果我把加注释那里的语句写成setTimeout(startCount);却不能执行,难道一定要延时调用吗?这里不解。

我在代码前加上window.onload后写成setTimeout(startCount);便可以执行,也就是我快照中的样子,这是为什么呢?

我是初学者,对于上面提出的两个疑问很难解决,看到的大神们如若能帮我解答一下,我会非常感谢大家哒!

正在回答

2 回答

应该是缺乏触发动作~加了windows.onload 是页面加载完就就自动执行了。加了setTimeout(startCount,1000) 也是1000 时间后就执行。 如果你弄清楚原因了 也请分享下

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

吾王比利 提问者

嗨,我已经清楚了,和你说的是一样的哦,把我笔记贴给你吧! ①为什么要用setTimeout(startCount,1000);触发而不是直接在函数写完后使用startCount();调用自身呢? 原因是这样的:JavaScript是解释性的语言,就像人看书一样,要看一句,执行一句,如果直接使用startCount();当解释器看到这里时还没有发现HTML标签中的id属性,自然也就不会执行了。 ②window.onload的作用是等网页加载完后再执行,原理和上文的延时执行是一样的,不赘述。
2015-08-18 回复 有任何疑惑可以回复我~
#2

Polly的遮阳伞 回复 吾王比利 提问者

帮大忙了!
2015-08-20 回复 有任何疑惑可以回复我~
#3

吾王比利 提问者 回复 Polly的遮阳伞

嘿嘿 共同进步哈
2015-08-20 回复 有任何疑惑可以回复我~

加引号“startCount” 这样写就好了

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

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468979    人
  • 解答问题       22582    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

来自setTimeout()的一个问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号