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

这个的逻辑有点无法理解的呀。。

想通了耶。。。


<script type="text/javascript">

  var num=0;

  function startCount() {

    document.getElementById('count').value=num;

    num=num+1;

    setTimeout("startCount()",2000); 

  }

    setTimeout("startCount()",1000); 

</script>


函数 startCount()内外都设置 setTimeout()该怎么理解呢?  为什么只在函数startCount()中设置  setTimeout("startCount()",1000)没有效果呢?


正在回答

2 回答

function外的setTimeout()不是必须的,只不过这样写时不需要点击文本框计数器就会从页面开始载入时自动运行了。

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

Beckybei

function内的setTimeout() 在完成这个函数里就是必须的 可以这样子理解吗?
2015-04-23 回复 有任何疑惑可以回复我~
#2

Groune 回复 Beckybei

这个是我理解错了,回头来看看还是血舞残殇大大的解释才是正确的。 只写function startCount() { document.getElementById('count').value=num; num=num+1; setTimeout("startCount()",1000); }只是相当于定义了一个名字叫startCount的函数,但是没有调用。而在function外写startCount()才进行了第一次调用,第一次调用后由于这个计数函数内部又自己调用自己,所以就开始循环计数了。
2015-04-23 回复 有任何疑惑可以回复我~
#3

Groune 回复 Beckybei

我原来为什么会理解错呢,是因为在计数器开始显示数字后直接把function外的startCount删掉了,但是不知道由于什么原因(我猜是因为这个函数还在内存中)计数器依旧被调用了,给我一个错误的理解。 其实你可以重新打开页面或者刷新一下试试,先不写外面的startCount看看会发生什么,然后再把外面的startCount写上,延迟时间可以长一些(如10秒),这样能比较直观的理解。
2015-04-23 回复 有任何疑惑可以回复我~
#4

Beckybei 回复 Groune

谢谢!
2015-04-23 回复 有任何疑惑可以回复我~
查看1条回复

setTimeout("startCount()",1000); 这句话是1秒之后调用1次startCount这个函数,是先把函数调用起来

然后setTimeout("startCount()",2000); 这句话是隔2秒之后再调用该函数,这样就可以做到循环调用了,类似于递归

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

举报

0/150
提交
取消

这个的逻辑有点无法理解的呀。。

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