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

哪位高手能解释下setTimmeout对自身的调用做到循环的,这个不懂啊.

哪位高手能解释下setTimmeout对自身的调用做到循环的,这个不懂啊.

正在回答

5 回答

 var num = 5;

        var i;

        function jishi() {

          document.getElementById("Time").innerHTML = num;

           num--;

          i = setTimeout(jishi,1000);

          if(num<0) {

            window.clearTimeout(i);

            window.open("https://123.sogou.com/","_blank");

          }

         

        }

        window.onload = jishi;

       本人也是初学,说的不清楚的话见谅。你看第一轮的时候调用jishi函数,网页显示数字是5,num减为4,使用setTimeout,setTimeout将在1秒后调用jishi函数,num是4>0,if部分不执行,第一轮结束。1秒之后,因为setTimeout对jishi函数的调用,第二轮开始,网页显示数字是4,以此类推。。。直到第六轮,网页显示是0,num减为-1,执行if部分,打开新的页面。

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

海的那边是海 提问者

非常感谢!
2016-12-01 回复 有任何疑惑可以回复我~

<html>

    <head>

        <meta charset="UTF-8" />

        <title>Document</title>

        <!-- <script type="text/javascript" src="jquery-1.11.1.min.js"></script> -->

        <!-- <link rel="stylesheet" type="text/css" href="base.css" /> -->


    </head>

    <body>

        <form>

            <input type="text" id="count" />

        </form>

    </div>

</div>

</body>

</html>

<script type="text/javascript">

window.onload=function(){

    var num=0;

    function startCount() {

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

        num=num+1;

        setTimeout('startCount()',1000)

        // alert(num)

    }

    startCount()

        // setTimeout('startCount()',1000)

}

</script>


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

你是不是想问这个循环是怎么产生的?

我是这么理解的,因为setTimeout()是包含在这个函数中的,所以函数在1s之后执行的时候会又执行setTimeout(),所以他就会隔一秒又执行这个函数,周而复始循环。

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

steTimeout(代码,延迟时间),这里要调用之前写的代码,延迟时间是一段时间后继续执行这个函数,举个例子,写一个函数function,内容是num+=1;然后用setTimeout调用就行了

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

多谢,就是开始没理解函数的自调用,其实这里面settimeout只是延迟了函数调用时间.不过你这回答倒是让我认识了另一个问题,.innerHTML如果在input里的话会不显示,改成div的话可以.input还是用value

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

举报

0/150
提交
取消

哪位高手能解释下setTimmeout对自身的调用做到循环的,这个不懂啊.

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