Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setInterval()导致超出最大堆栈调用大小错误?_Javascript_Jquery - Fatal编程技术网

Javascript setInterval()导致超出最大堆栈调用大小错误?

Javascript setInterval()导致超出最大堆栈调用大小错误?,javascript,jquery,Javascript,Jquery,在运行下面的代码一段时间后,我收到一个超过最大堆栈调用大小的错误。SetIntervals应该能够无缝地递归运行,所以我还不能确定错误是由它还是代码的另一部分引起的 function blinkCursor() { $("#cursor").animate({opacity: 0}).animate({opacity: 1}); } setInterval(blinkCursor, 600); 这是代码的最后一部分。但是我没有测试上面的部分,也没有问题。无论如何,现在我不太确定 fun

在运行下面的代码一段时间后,我收到一个超过最大堆栈调用大小的错误。SetIntervals应该能够无缝地递归运行,所以我还不能确定错误是由它还是代码的另一部分引起的

function blinkCursor() {
    $("#cursor").animate({opacity: 0}).animate({opacity: 1});
} setInterval(blinkCursor, 600);
这是代码的最后一部分。但是我没有测试上面的部分,也没有问题。无论如何,现在我不太确定

function type() {
    var firstSentence = "Human rights",
        firstSentenceCounter = 0,
        intervalID = setInterval(typeWithDelay, 150);

    function typeWithDelay() {
        $("#text").text(firstSentence.substring(0, firstSentenceCounter++));

        if(firstSentenceCounter == firstSentence.length+1) {
            clearInterval(intervalID);
        }
    }
} setTimeout(type, 1500);
动画默认持续时间为400

在动画完成之前很久,您就一直在调用函数,并不断地将其添加到动画队列中,该队列从未停止增长

400+400=800。。。当前使用的间隔大于600

更好的方法是使用最后一个动画回调来初始化下一轮,而不是使用setInterval

动画默认持续时间为400

在动画完成之前很久,您就一直在调用函数,并不断地将其添加到动画队列中,该队列从未停止增长

400+400=800。。。当前使用的间隔大于600

更好的方法是使用最后一个动画回调来初始化下一轮,而不是使用setInterval


看来你是想实现打字机的效果。这只能通过CSS实现。无需为此编写JavaScript,除非您支持IE7等旧浏览器

签出以下链接:


看来你是想实现打字机的效果。这只能通过CSS实现。无需为此编写JavaScript,除非您支持IE7等旧浏览器

签出以下链接:


如果递归调用某个对象,则不会使用setInterval。多长时间?目前正在测试这个,几分钟内没有问题坦率地说,一段时间是很多的。我在电脑之外做了很多其他的事情,大概有20多分钟了。我回来检查了控制台,找到了答案。如果不是闪烁的光标在出现错误时停止闪烁,那么它可能比任何用户都能感觉到的要多。如果您递归调用某个对象,则不会使用setInterval。多长时间?目前正在测试这个,几分钟内没有问题坦率地说,一段时间是很多的。我在电脑之外做了很多其他的事情,大概有20多分钟了。我回来检查了控制台,找到了答案。如果不是闪烁的光标在出现错误时停止闪烁,这可能比任何用户都能感觉到的要多得多。解决方案是一个好概念,但仅链接的答案不是很有价值。链接只能用作参考答案中实际存在的代码。谢谢。但我通过js进行培训。解决方案是一个很好的概念,但仅链接的答案并不是很有价值。链接只能用作参考答案中实际存在的代码。谢谢。但我通过js进行训练,我明白了这一点,修改了代码,但由于某种原因,闪烁不再发生。有什么想法吗?一旦你自己启动它,就需要调用blinkCursor,如果你想延迟第一个,可以使用setTimeout for itPerfect,它可以工作。必须等待检查错误,但我认为没有任何问题。Tks!我明白了这一点,修改了代码,但由于某种原因,闪烁不再发生。有什么想法吗?一旦你自己启动它,就需要调用blinkCursor,如果你想延迟第一个,可以使用setTimeout for itPerfect,它可以工作。必须等待检查错误,但我认为没有任何问题。Tks!
function blinkCursor() {
    $("#cursor").animate({opacity: 0}).animate({opacity: 1}, blinkCursor );
}
blinkCursor(); // initialize once