在javascript中有多个倒数计时器事件间隔

时间:2014-08-08 14:29:50

标签: javascript html javascript-events timer

我正在尝试使用javascript创建多个倒计时器。 面对显示javascript的时间和setInterval cleartInterval事件的问题。 我的代码在jsfiddle上:here

使用Javascript:

function secondPassed(row, secs) {
    var seconds = secs;
    var minutes = Math.round((seconds - 30)/60);
    var remainingSeconds = seconds % 60;
    if (remainingSeconds < 10) {
        remainingSeconds = "0" + remainingSeconds;  
    }
    document.getElementById('countdown'+row).innerHTML = minutes + ":" + remainingSeconds;
    if (seconds == 0) {
        clearInterval(countdownTimer[row]);
        document.getElementById('countdown'+row).innerHTML = "Buzz Buzz";
    } else {
        seconds--;
    }
}

var countdownTimer = [];

function timer(row, min) { 
    var seconds = min * 60;
    countdownTimer[row] = setInterval('secondPassed('+row+','+seconds+')', 1000);
}


timer(1, 3);
timer(2, 2);
timer(3, 5);

HTML: Timer 1: <span id="countdown1" class="timer"></span> <br/> Timer 2: <span id="countdown2" class="timer"></span> <br/> Timer 3: <span id="countdown3" class="timer"></span>

1 个答案:

答案 0 :(得分:2)

这里有几个问题。

首先,使用参数设置定时器功能的语法是错误的。请参阅Pass parameters in setInterval function

其次,您需要在某处存储每个计时器的剩余秒数。

var timerData = [];

function secondPassed(row) {
    var seconds = timerData[row].remaining;
    var minutes = Math.round((seconds - 30) / 60);
    var remainingSeconds = seconds % 60;
    if (remainingSeconds < 10) {
        remainingSeconds = "0" + remainingSeconds;
    }
    document.getElementById('countdown' + row).innerHTML = minutes + ":" + remainingSeconds;
    if (seconds == 0) {
        clearInterval(timerData[row].timerId);
        document.getElementById('countdown' + row).innerHTML = "Buzz Buzz";
    } else {
        seconds--;
    }
    timerData[row].remaining = seconds;
}

function timer(row, min) {
    timerData[row] = {
        remaining: min * 60,
        timerId: setInterval(function () { secondPassed(row); }, 1000)
    };
}

timer(1, 3);
timer(2, 2);
timer(3, 5);

工作小提琴:http://jsfiddle.net/835xehna/4/