Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mozilla和IE中的Javascript定时器倒计时-在Chrome中工作_Javascript_Firefox_Countdown - Fatal编程技术网

Mozilla和IE中的Javascript定时器倒计时-在Chrome中工作

Mozilla和IE中的Javascript定时器倒计时-在Chrome中工作,javascript,firefox,countdown,Javascript,Firefox,Countdown,下面的Javascript用于为我的php游戏格式化一系列计时器。当用户提交一个选项时,它会重置计时器,根据用户在当前时间提交时记录的时间,说准备倒计时1分钟。当计时器达到“0”时,它将重置为默认的就绪状态。它与CHrome完美配合,但Firefox和IE只显示Ready,不会更新计时器并开始倒计时。非常感谢您的帮助 var d = new Date(); var tarray = new Array(); function loadTimers() { var timersrow

下面的Javascript用于为我的php游戏格式化一系列计时器。当用户提交一个选项时,它会重置计时器,根据用户在当前时间提交时记录的时间,说准备倒计时1分钟。当计时器达到“0”时,它将重置为默认的就绪状态。它与CHrome完美配合,但Firefox和IE只显示Ready,不会更新计时器并开始倒计时。非常感谢您的帮助

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细胞没有';'这可能是最大的原因。

我们非常喜欢jsfiddle/codepen:我同意,但是有很多页面和php变量等可以让这个脚本工作。我希望有人能看到我的javascript中的错误,这可能是firefox和ie不喜欢它的原因。除非我的日期格式有问题,否则必须排除可能没有错误:在使用函数之前声明它们,并将基数参数添加到parseInt调用中,如parseIntseconds/60,10。。但这可能无法解决问题。在这种情况下,您应该检查控制台。JS中有设置断点的调试选项。也许这与一些方法调用有关。例如,appendChild在旧版本FF&IE中不起作用,但作为一个例子。。也许你的变量有默认关键字的名称,你知道吗?也许其他人马上就看到了..顺便说一句:在你的函数格式中,你基本上是这样做的:seconds=parseIntparseIntseconds/1000/60*60*60*60;。。。2.事情可能是多余的