问答详情
源自:8-5 计时器setTimeout()

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

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

提问者:海的那边是海 2016-11-27 23:05

个回答

  • 慕粉2215357933
    2016-11-28 00:12:09
    已采纳

     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部分,打开新的页面。

  • qq_安康01_0
    2016-12-06 22:05: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>


  • 木a
    2016-12-01 21:47:15

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

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

  • qq_海上独木舟_04166661
    2016-12-01 11:13:48

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

  • 海的那边是海
    2016-11-29 18:09:35

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