1

以下の Javascript は、PHP ゲームの一連のタイマーをフォーマットするために使用されます。ユーザーがオプションを送信すると、ユーザーが現在の時間に対して送信したときに記録された時間に基づいて、「準備完了」と言ってタイマーをリセットし、1 分間カウントダウンします。タイマーが「0」に達すると、デフォルトの「Ready」にリセットされます。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();
4

1 に答える 1

0

ご協力いただきありがとうございます。関数が定義される前に呼び出されることが重要な問題の 1 つであり、丸めシステムを parseInt ではなく math.floor に変更したことが原因であると思われるため、問題を解決しました。

私もばかげています-Varセルには「;」がありませんでした それが一番の理由だったかもしれません。

于 2012-12-14T01:04:20.850 に答える