首页 > JS计时器的问题

JS计时器的问题

<button id="start">start</button>
    var newTimer;
    function startTimer(){
        newTimer=setInterval(function(){myTimer()},3000);
    }
    function myTimer(){
        $('#test').fadeOut(1000);
        $('#test').fadeIn(1000);
        var d=new Date();
        var i=d.toLocaleTimeString();
        $('#test').html(i);
    }
    function stopTimer()
    {
        clearInterval(newTimer);
    }
    $(document).ready(function(){
        $("#start").click(function(){
            startTimer();
        })
    })

初学者,请问
(1)为什么点击按钮后setInterval不是立即执行函数,而是先等3秒再开始。
(2)按钮多点几次之后执行间隔越来越短

麻烦大家帮忙看下,应该如何修复,谢谢!


你的计时器设置了三秒(...,3000)


  1. interval 的特性就是每隔一段时间执行一次, 所以不会一设置计时器就立即调用目标函数.

  2. 多次单击, 时间变短是因为产生了多个计时器,他们都在改 #test 的内容.

正确的做法是:

    $(document).ready(function(){
        $("#start").click(function(){
            stopTimer();//停止目前的计时器
            myTimer();//手工调用一次 目标函数
            startTimer();//设置 计时器
        })
    })

//try
$(document).ready(function(){
                $("#start").click(function(){
                    if(newTimer !=null || newTimer != 'undefined')
                    {
                        stopTimer();
                    }
                    myTimer();
                    startTimer();
                })
            })
【热门文章】
【热门文章】