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