Javascript 动画在一段时间后停止

Javascript 动画在一段时间后停止,javascript,jquery,html,Javascript,Jquery,Html,我只是写了下面的代码。单击按钮后,3个容器应开始无限闪烁,但闪烁会在一段时间后停止。我还不明白为什么。有什么想法吗 <!DOCTYPE html> <html> <head> <title></title> <script src="js/jquery-1.10.2.min.js"></script> <script> $(document).ready(function(){

我只是写了下面的代码。单击按钮后,3个容器应开始无限闪烁,但闪烁会在一段时间后停止。我还不明白为什么。有什么想法吗

<!DOCTYPE html>
<html>
<head>
<title></title>


<script src="js/jquery-1.10.2.min.js"></script>

<script>
    $(document).ready(function(){
        $("#btn").click(function(){
          Do();
        })
    });
    function Do(){


        $(".container").fadeOut("slow",function(){
            $(this).fadeIn("slow",function(){Do();});
        });
    }
</script>
<style type="text/css">
    .container{
        background: yellow;
        width: 200px;
        height: 50px;
        font-size: 20px;
    }
</style>

</head>
<body>
<button type="button" id="btn">Push Me</button>
<div id="container" class="container">
   Hello
</div>
<div id="container2" class="container">
   Hello
</div>
<div id="container3" class="container">
   Hello
</div>

</body>
</html>

$(文档).ready(函数(){
$(“#btn”)。单击(函数(){
Do();
})
});
函数Do(){
$(“.container”).fadeOut(“慢”,函数(){
$(this.fadeIn(“slow”,function(){Do();});
});
}
.集装箱{
背景:黄色;
宽度:200px;
高度:50px;
字体大小:20px;
}
推我
你好
你好
你好

如果查看控制台中的fiddle@Bram,jquery会记录一个错误

未捕获范围错误:超过最大调用堆栈大小

也许你需要改变动画的工作方式,或者用css制作动画

看这把小提琴,我加了一把

setInterval(Do,1500);
防止无限递归调用

也可以像这样更改淡入淡出和淡出链接

$(".container").fadeOut(1000).fadeIn(1000);

如果查看控制台中的fiddle@Bram,jquery会记录一个错误

未捕获范围错误:超过最大调用堆栈大小

也许你需要改变动画的工作方式,或者用css制作动画

看这把小提琴,我加了一把

setInterval(Do,1500);
防止无限递归调用

也可以像这样更改淡入淡出和淡出链接

$(".container").fadeOut(1000).fadeIn(1000);

在这里,您只需添加到事件队列中,这样递归就不会成为问题:

$(document).ready(function () {
    $("#btn").click(function () {
        $(".container").fadeOut("slow").fadeIn("slow", function () {
            $("#btn").trigger("click");
        });
    });
});

在这里,您只需添加到事件队列中,这样递归就不会成为问题:

$(document).ready(function () {
    $("#btn").click(function () {
        $(".container").fadeOut("slow").fadeIn("slow", function () {
            $("#btn").trigger("click");
        });
    });
});

真奇怪。为想玩小提琴的人准备的小提琴。它抛出了一个未捕获的RangeError:超出了最大调用堆栈大小。您可以尝试使用each.container调用函数Do(),就像这种奇怪的行为一样。为想玩小提琴的人准备的小提琴。它抛出了一个未捕获的RangeError:超出了最大调用堆栈大小。您可以尝试用每个.container调用函数Do(),如下所示