setTimeout 循环中超出了最大调用堆栈大小
Maximum call stack size exceeded in setTimeout loop
我的功能有问题。这是一个函数,当你按下一个按钮时,它会一个一个地显示数组中的每个单词,持续一秒钟,但出于某种原因,它告诉我我打电话太多了,尽管一定要放一个循环来检查它是否可以调用。
在这里
var liste = ["one", "two", "three", "four", "five"]; //Changer la liste par la liste de syllabes qu'on veut travailler. Je ne sais pas encore comment l'importer d'un fichier txt
var text = document.getElementById("myText");
var btn = document.getElementById("myBtn");
btn.addEventListener("click", showsyll(liste));
function showsyll(arr) {
var i=0;
if (i < arr.length) {
text.innerHTML= arr[i++];
setTimeout(showsyll(arr), 1000);
}
else {
return
}
}
html部分超级简单,只有一个按钮和一个文本id
<p id="myText"></p>
<button type="button" id="myBtn">Press to show syllables</button>
首先,你的 i 总是为零,因为它在你的回调函数中定义,我在箭头函数中调用了你的函数,现在它正在工作:
var liste = ["one", "two", "three", "four", "five"];
var text = document.getElementById("myText");
var btn = document.getElementById("myBtn");
var i;
btn.addEventListener("click", ()=>{
i=0;
showsyll(liste);
});
function showsyll(arr) {
if (i < arr.length) {
text.innerHTML= arr[i];
i+=1;
setTimeout(()=>{
showsyll(arr);
}, 1000);
}
else {
return
}
}
<p id="myText"></p>
<button type="button" id="myBtn">Press to show syllables</button>
我的功能有问题。这是一个函数,当你按下一个按钮时,它会一个一个地显示数组中的每个单词,持续一秒钟,但出于某种原因,它告诉我我打电话太多了,尽管一定要放一个循环来检查它是否可以调用。 在这里
var liste = ["one", "two", "three", "four", "five"]; //Changer la liste par la liste de syllabes qu'on veut travailler. Je ne sais pas encore comment l'importer d'un fichier txt
var text = document.getElementById("myText");
var btn = document.getElementById("myBtn");
btn.addEventListener("click", showsyll(liste));
function showsyll(arr) {
var i=0;
if (i < arr.length) {
text.innerHTML= arr[i++];
setTimeout(showsyll(arr), 1000);
}
else {
return
}
}
html部分超级简单,只有一个按钮和一个文本id
<p id="myText"></p>
<button type="button" id="myBtn">Press to show syllables</button>
首先,你的 i 总是为零,因为它在你的回调函数中定义,我在箭头函数中调用了你的函数,现在它正在工作:
var liste = ["one", "two", "three", "four", "five"];
var text = document.getElementById("myText");
var btn = document.getElementById("myBtn");
var i;
btn.addEventListener("click", ()=>{
i=0;
showsyll(liste);
});
function showsyll(arr) {
if (i < arr.length) {
text.innerHTML= arr[i];
i+=1;
setTimeout(()=>{
showsyll(arr);
}, 1000);
}
else {
return
}
}
<p id="myText"></p>
<button type="button" id="myBtn">Press to show syllables</button>