2 回答

TA贡献1859条经验 获得超6个赞
document.getElementById('timer')总是返回在 DOM 中找到的第一个项目!您应该使用不同的 id ( #timer-1,#timer-2等) 并在您完成每个步骤时有条件地选择它们。
您可以startCountdown像这样扩充您的方法:
function startCountDown (selectorId, seconds) {
var counter = seconds;
var interval = setInterval(() => {
document.getElementById(selectorId).innerHTML = "("+counter + " seconds left)" ;
counter--;
if(counter < 0 ){
clearInterval(interval);
};
}, 1000);
};
let idCounter = 0
$("#nextStep").click(function() {
// generate new counter id based on your progression
// this assumes your ids are timer-0, timer-1, etc
startCountdown(60, 'timer-' + idCounter);
idCounter++
});
更好的方法是使用类,getElementsByClassName()然后简单地遍历数组:
function startCountDown (selectorId, timerCounter, seconds) {
var counter = seconds;
var interval = setInterval(() => {
// getElementsByClassName returns a DOMNodeList of matched items that you can use indexes to access
document.getElementByClassName(selectorId)[timerCounter].innerHTML = "("+counter + " seconds left)" ;
counter--;
if(counter < 0 ){
clearInterval(interval);
};
}, 1000);
};
let timerCounter = 0
$("#nextStep").click(function() {
startCountdown(60, 'timer', timerCounter);
timerCounter++
});

TA贡献2016条经验 获得超9个赞
您需要更改 <span class="timer"></span>为 <span id="timer"></span>. 最后 };in 给我一个错误,所以我用
var counter = seconds;
var interval = setInterval(() => {
document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;
counter--;
if(counter < 0 ){
clearInterval(interval);
};
}, 1000);
代替
var counter = seconds;
var interval = setInterval(() => {
document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;
counter--;
if(counter < 0 ){
clearInterval(interval);
};
}, 1000);
};
你可以做
var counter = seconds;
function startInterval() {
var interval = setInterval(() => {
document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;
counter--;
if(counter < 0 ){
clearInterval(interval);
};
}, 1000);
}
并用于 startInterval()启动计时器。如果你需要在计时器秒数结束时做某事,你可以做
var counter = seconds;
function startInterval() {
var interval = setInterval(() => {
document.getElementById('timer').innerHTML = "("+counter + " seconds left)" ;
counter--;
if(counter < 0 ){
clearInterval(interval);
var timerOver = true;
};
}, 1000);
};
添加回答
举报