停止setInterval函数

时间:2014-04-21 20:58:50

标签: jquery

我试图让这个setInterval函数在按钮切换到" STOP"并点击。单词START将变为STOP,反之亦然,但随机BG颜色变化不会停止而是复合。

$(document).ready(function(){
function randomColor(){
    return "#" + Math.random().toString(16).slice(2,8);
};

$("button").click(function(){
    var $go = $("button").text();
    if ($go === "START"){
        setInterval(function Colors(){
            $("body").css("background-color", randomColor());
            }, 300);
        $("button").text("STOP");
    }
    else {
        //Tried clearInterval and doing a new $("body").css("background-color","white")
        $("button").text("START");
    };
});
});

如果网站链接或其他信息有用,请告知我们。谢谢!

1 个答案:

答案 0 :(得分:2)

您必须将setInterval返回的值保存在变量中,并在想要停止时将其传递给clearInterval

var timer;
$("button").click(function(){
    var $go = $("button").text();
    if ($go === "START"){
        timer = setInterval(function Colors(){
            $("body").css("background-color", randomColor());
            }, 300);
        $("button").text("STOP");
    }
    else {
        clearInterval(timer);
        $("button").text("START");
    };
});