如何在用户单击时触发setInterval函数?

时间:2011-05-20 19:30:11

标签: javascript timer setinterval

我正在尝试编写一个JS计时器,该计时器将由用户单击id =“start”的按钮触发。

我已经让计时器本身正常工作了,但是当我尝试添加代码来启动单击按钮上的计时器时(id =“start”)我打破它并且不确定原因。

非常感谢任何帮助!

这是JS代码:

    $(document).ready(function(){

    var count = 0;

        $('#start').click(function(){
            setInterval(function(){
                count++;
                $('#timer').html(count + ' tacos seconds');
            },1000);
        });

    });

4 个答案:

答案 0 :(得分:1)

$(document).ready(function() {
    $('#start').click((function(container) {
        var interval;
        return function() {
            if(interval) clearInterval(interval);

            var count = 0;

            interval = setInterval(function() {
                count++;
                $(container).html(count + ' tacos seconds');
            }, 1000);
        };
    })("#timer"));
});

答案 1 :(得分:0)

$(document).ready(function() {
  var count = 0;
  var myInterval = null;
  $('#start').click(function(){
      myInterval = setInterval(function(){
        count++;
        $('#timer').html(count + ' tacos seconds');
      },1000);
  });

});

在单击处理程序的范围内设置setInterval时,请尝试将其分配给变量以保持声明的间隔为一个级别。这通常对我有用。

答案 2 :(得分:0)

不确定你的目标是什么,但也许你想尝试这样的事情:

var startInterveal;
var timerStarted = false;
var count =0;
$(document).ready(function () {
    $('#start').click(function () {
        if (!timerStarted) {
            timerStarted = true;
            count =0;
            $(this).attr('disabled', 'disabled');
            startInterveal = setInterval('tick();', 1000);
        }
    });
});

function tick() {
    count++;
    $('#timer').html(count + ' tacos seconds');
}

答案 3 :(得分:0)

如果你真的想要坚持并有一些可以恢复的东西,那么这是第二个答案:

$(document).ready(function() {
    $('#start').click(overboard("#timer"));
    $('#start2').click(overboard("#timer2"));
});

function overboard(container) {
    var interval;
    return function() {
        if (interval) clearInterval(interval);

        var count = 0;

        interval = setInterval(function() {
            count++;
            $(container).html(count + ' tacos seconds');
        }, 1000);
    };
}