setinterval方法不起作用

时间:2012-05-21 00:40:26

标签: javascript jquery

我有一个按钮,每隔1秒触发设定间隔内的功能。 按钮的值更改为停止。当我点击停止时,我调用了clearinterval方法。 由于某种原因,清除间隔方法不起作用。

这是我的输入

<input id="trigger" type="button" value="start"/>

我的js功能

$(function() {
    $('#trigger').click(function() {
        var timerId = 0;
        var trigger = $('#trigger').val();

        if(trigger == 'start') {
            timerId = setInterval(function() {
                $('#trigger').val('stop');
                main();
            }, 1000);
        } else if(trigger == 'stop') {
                clearInterval(timerId);
                $('#trigger').val('start');                
        }
    });
});

2 个答案:

答案 0 :(得分:4)

你有timerId被定义为click()范围的本地,所以当你第二次运行它(在stop事件中)时它将再次为0。试试这个

var timerId = 0;
$(function() {
    $('#trigger').click(function() {
        var trigger = $('#trigger').val();

        if(trigger == 'start') {
            timerId = setInterval(function() {
                $('#trigger').val('stop');
                main();
            }, 1000);
        } else if(trigger == 'stop') {
                clearInterval(timerId);
                $('#trigger').val('start');                
        }
    });
});

答案 1 :(得分:3)

每次单击#trigger时,您都会重新初始化timerId。将var timerId = 0;移到点击功能

之外