Javascript 就可以';t使clearInterval()工作

Javascript 就可以';t使clearInterval()工作,javascript,jquery,setinterval,clearinterval,Javascript,Jquery,Setinterval,Clearinterval,我已经通读了所有与clearInterval相关的帖子,但不知怎么的,就是不能让它工作。。。 脚本所做的是,一旦“.xmas title”更改图像,就会设置间隔。 一旦鼠标单击,间隔将被清除 var animation; $(".xmas-title").delay(4000).fadeIn(400, function(){ bear_shake(true); }); $(".xmas-more").delay(4200).fadeIn(400, function(){ $('

我已经通读了所有与clearInterval相关的帖子,但不知怎么的,就是不能让它工作。。。 脚本所做的是,一旦“.xmas title”更改图像,就会设置间隔。 一旦鼠标单击,间隔将被清除

var animation;
$(".xmas-title").delay(4000).fadeIn(400, function(){
    bear_shake(true);
});

$(".xmas-more").delay(4200).fadeIn(400, function(){
    $('.bg-xmas').css( 'cursor', 'pointer' );
    $(".bg-xmas").click(function(){
        show_msg();
        bear_shake(false);
    });
});

function bear_shake(bool){
    if(bool){
        animation = setInterval(function(){
            $(".xmas-bear").delay(200).fadeOut(0, function(){
                $(".xmas-bear").children("img").attr('src', 'images/xmas/xmas-bear_o1.png');
            }).fadeIn(0);
            $(".xmas-bear").delay(200).fadeOut(0, function(){
                $(".xmas-bear").children("img").attr('src', 'images/xmas/xmas-bear_o2.png');
            }).fadeIn(0);
        },0);
        console.log('true');
    }else{
        clearInterval(animation);
        console.log('false');
        $(".xmas-bear").children("img").attr('src', 'images/xmas/xmas-bear.png');
    }
}

谢谢你们,我似乎错过了最基本的东西,我只是试着让自己的事情变得困难。 我综合了你们所有人的意见,现在就开始工作。 函数bear_shake重写如下:

function bear_shake(bool){
    if(bool){
        var i = 2;
        animation = setInterval(function(){
            if(i % 2== 0){
                $(".xmas-bear").children("img").attr('src', 'images/xmas/xmas-bear_o1.png');
            }else{
                $(".xmas-bear").children("img").attr('src', 'images/xmas/xmas-bear_o2.png');
            }
            i++;
        },200);
    }else{
        clearInterval(animation);
        $(".xmas-bear").children("img").attr('src', 'images/xmas/xmas-bear.png');
    }
}
现在对我来说,它看起来清晰而简单,谢谢大家。
我想知道还有其他更好或更聪明的方法吗?

问题出在哪里?为什么要将间隔设置为零?@akonsu bear_shake(true)会使图像bear不断变化(看起来像是一直在握手),我希望它在bear_shake(false)时停止动画,它会变回“xmas bear.png”,但它会变回“xmas bear.png”,然后继续动画。你的意思是当你单击时,动画不会停止吗?请注意,在超时处理程序中也有动画,动画一旦开始就一直播放到结束,无论是否清除间隔。你需要停止它们来停止所有的动画。使用setInterval来完成这类事情真的是个坏主意。而且你在一秒钟内运行了很多次代码,这是你的电脑在没有处理延迟的情况下无法处理的。将你的时间间隔设置为100ms,那么它应该可以工作。使用setTimeout和delays只是要求麻烦选择。摆脱延迟,在延迟时间启动间隔。问问题或给出答案,你不明白吗?@surajrawat在问这个问题,在我从其他人的评论中得到一些反馈后找到了答案。当然,我仍然接受其他更好的解决方案(这就是为什么我还没有接受自己的答案)。似乎代码仍然可以更智能,我希望看到任何其他的可能性。