Mozilla 和 IE 中的 Javascript 计时器倒计时 - 适用于 Chrome

标签 javascript firefox countdown

下面的 Javascript 用于为我的 PHP 游戏格式化一系列计时器。当用户提交选项时,它会重置计时器,显示“就绪”,根据用户提交时记录的时间相对于当前时间倒计时 1 分钟。当计时器达到“0”时,它会重置为默认值“就绪”。它与 CHrome 完美配合,但在 Firefox 和 IE 中它仅显示“就绪”,但不会更新计时器并开始倒计时。非常感谢任何帮助。

var d = new Date();

var tarray = new Array();

function loadTimers()
{
    var timersrow = g('timersrow');
    var html = '';
    var list = tinfo.split('|');
    var i;
    var cell
    for ( i=0; i<list.length; i++ ) {
        data = list[i].split(',');

        cell = ce('td');
        cell.innerHTML = data[0];
        timersrow.appendChild(cell);

        //html += '<td id="tcell' + data[0] + '">' + data[0] + '</td>';
        tarray[tarray.length] = new objTimer(data[0], data[1], cell);
    }
    //timersrow.innerHTML = html;

    updateTimers();
}

function updateTimers() {
    var i;
    for ( i=0; i<tarray.length; i++ ) {
        tarray[i].update(); 
    }
    setTimeout('updateTimers();', 250);
}

function objTimer(label, time, cell)
{
    this.label = label;
    this.time = Date.parse(time);
    this.cell = cell;

    function update() 
    {
        var t = new Date();
        var val = this.time - t.getTime();
        if ( val > 0 ) {
            this.cell.innerHTML = 'Next ' + this.label + ': ' +  formatSeconds(val);
        } else {
            this.cell.innerHTML = 'Next ' + this.label + ': Ready';
        }
    }
    this.update = update;
}

function formatSeconds(seconds) 
{   
    var h = 0, m = 0,
    seconds = parseInt(seconds / 1000);
    if (seconds > 60 * 60 ) {
        h = parseInt(seconds / (60 * 60));
        seconds -= h * 60 * 60;
    }
    if ( h < 10 ) {
        h = '0' + h;    
    }
    if ( seconds > 60 ) {
        m = parseInt(seconds / 60);
        seconds -= m * 60;
    }
    if ( m < 10 ) {
        m = '0' + m;    
    }
    if ( seconds < 10 ) {
        seconds = '0' + seconds;    
    }
    return h + ':' + m + ':' + seconds;
}

loadTimers();

最佳答案

感谢大家的帮助。我已经解决了这个问题,因为我相信在定义函数之前调用函数是关键问题之一,并将舍入系统更改为 math.floor 而不是 parseInt。

我也很傻 - Var 单元格没有 ';'这可能是最大的原因。

关于Mozilla 和 IE 中的 Javascript 计时器倒计时 - 适用于 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13839909/

相关文章:

Javascript REGEX 匹配多个自定义标签(也不完整)

css - Firefox 上 Tumblr 的 Base64 字体编码

android - 倒数计时器不显示剩余天数

javascript - 当 alpha 透明时,HTML5 Canvas 到 PNG 将所有 channel 归零

javascript - jQuery、onclick 和禁用选择

javascript - 对 array.shift() 感到困惑 - 来自 Secrets of the JS Ninja 的示例

debugging - 有没有办法让 Firefox 忽略无效的 ssl 证书?

javascript - 为什么 JavaScript 不适用于 Firefox/Chrome 而适用于 IE?

javascript - 倒计时不起作用

JavaScript 不可破解的倒计时器