【发布时间】:2020-11-08 08:21:29
【问题描述】:
您好,我正在尝试创建一个小型锻炼应用程序。该应用程序显示一个练习和一个计数器。我想让计数达到指定的数字(20),然后让循环移动到并显示数组中的下一个练习并将计数重置回 0。我希望它重复此操作,直到所有练习数组已显示。
我也非常感谢有人告诉我哪里出了问题。
链接:https://codepen.io/jtog95/pen/zYrMpPB
var increasing = true;
var excercises = document.getElementById('exercises');
var counter = document.getElementById('counter');
var count = 0;
var specifiedNum = 20;
var exerciseList = ['Push-ups', 'Pulls-ups', 'Squats', 'Curls'];
var fnLoop = setInterval(exerciseLoop, 20000);
function exerciseLoop(){
for(var i = 0; i < exerciseList.length; i++){
exerciseList[i] = excercises.innerHTML;
increasing === true ? count++ : count = 0;
count = counter.innerHTML;
if(count === specifiedNum) {
count = 0;
exerciseList[i] += 1;
clearInterval(fnLoop);
}
}
}
<div class="counter-container">
<div id= 'counter' class="counter">0</div>
</div>
<div class="exercisecontainer">
<div class="currentexercise">Current Exercise: </div>
<div id= 'exercises' class="exercises">Push-Ups</div>
</div>
<div class="buttoncontainer">
<button id='start' class='start button'>Start</button>
<button id='stop' class='stop button'>Stop</button>
</div>
【问题讨论】:
-
我建议使用 reduce 与您的延迟和您用于锻炼的节点列表。您的 setTimeout() 嵌入在 reduce 函数中。每次 setTimeout() 完成时,reduce 都会触发并移动到下一个练习及其定义的时间(以秒为单位)
delay。在 reduce 函数之前定义一个计数器并用它来识别节点列表 nodeList[i] 那么你的总延迟将需要增加 += 延迟...
标签: javascript arrays loops innerhtml