为什么RangeError:this.startTime();
中超出了最大调用堆栈大小startTime() {
$('.m-codeModal-resendTimer').html(this.sectmr);
this.sectmr--;
if (this.sectmr < 0) {
this.sectmr = 0;
$('.m-codeModal-resendErrorNow').fadeIn(0);
$('.m-codeModal-resendErrorSec').fadeOut(0);
$('.m-codeModal-sorry').fadeOut(0);
}
setTimeout(this.startTime(), 1000);
}
答案 0 :(得分:2)
有几件事......
startTime
关键字以定义您的this
功能。setTimeout
对startTime
的引用中的startTime
关键字。 setTimeout
函数有机会评估并倒计时1000毫秒之前实际调用var count = 0;
function startTime() {
count++;
document.getElementById('count').innerHTML = count;
setTimeout(startTime, 1000);
}
startTime();
函数。这是一个简单的例子:
<div id="count"></div>
&#13;
{{#each users}}
<li>
<a href = "/chatTime/:{{_id}}">{{username}}</a>
</li>
{{/each}}
&#13;
答案 1 :(得分:1)
你处于无限循环中。
通过首次调用startTime()函数调用,一旦输入setTimeout函数,就会再次递归调用startTime。
在你现在的startTime()函数中,进入后无法退出。
也许你想尝试
if (this.sectmr < 0) {
...
return;
}
通过添加return语句,一旦你的sectmr低于零并进入if循环,你应该被踢出函数。但是,我不确定你的最终目标是什么。请在开头问题中提供更具描述性的内容。
答案 2 :(得分:0)
问题在于您正在执行setTimeout(this.startTime(), 1000);
,执行this.startTime()
并使用其返回值(在本例中为undefined)作为计时器处理程序。只需删除()
。