繁体   English   中英

使用setInterval启动/停止功能

[英]Start/stop function with setInterval

我有一个简单的setInterval函数,用于单选按钮在加载时循环播放。
我想添加一个按钮,它可以启动或停止循环。 我已经为该函数添加了click函数,但是之后不知道如何停止它。

这是到目前为止我得到的: jsfiddle

另外,如果我连续多次单击该按钮,循环会发疯-寻求帮助的任何方法:)

ps我也检查过:
使用javascript,jQuery
带有setTimeout / setInterval的Javascript循环问题

但是我在黑暗中想知道如何使用这些答案,因为我是javascript noob。

引用您的setInterval以便可以使用clearInterval(yourreference) 要开始/停止,您可以添加一个额外的布尔变量来切换开始和停止。

var t;
var running = false;

$("#start-stop").click(function(){
    clearInterval(t);
    running = !running;
    if (!running) 
        return;
    t = setInterval(function(){
        $('.wrap input')
        .eq( ( $('input:checked').index() + 1 ) % 3 )
        .prop('checked',true);
    },1000);
});

小提琴

尝试

jQuery(function () {
    var timer;
    $("#start-stop").click(function () {
        if (timer) {
            clearInterval(timer);
            timer = undefined;
        } else {
            timer = setInterval(function () {
                $('.wrap input')
                    .eq(($('input:checked').index() + 1) % 3)
                    .prop('checked', true);
            }, 1000);
        }
    });
})

演示: 小提琴

没有clearInterval的解决方案

jQuery(function () {
   var toggle = null;
    $("#start-stop").click(function () {
        if(toggle == null) {
            toggle = false;
            setInterval(function () {
                if(toggle)
                    $('.wrap input').eq(($('input:checked').index() + 1) % 3).prop('checked', true);
              }, 1000);
        }   
        toggle = !toggle;
    }); 
});

小提琴这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM