1

「seconds」パラメータに「break」を入力する場合を除いて、刻々と過ぎていきたい時計があります。私が「休憩」を入れると、時計は一瞬止まり、それから刻々と過ぎていきます。カチカチ音をたてないようにしたいのですが、何が問題なのかわかりません。記録のために、ページの読み込み時にこの関数を呼び出し、ユーザーがページ上の要素をクリックするたびに呼び出します。彼らが何かをクリックした後、それは厄介になります。

var seconds;

function countdown_clock(seconds) {
    if (seconds != "break") {
        countdown(seconds);

        seconds = seconds;
    }
}

function displaymessage() {
    alert("Your Time Has Expired");
}

function countdown(seconds) {
    if (seconds != "break") {
        Time_Left = seconds;
        format = 1;

        if (Time_Left < 0)
            Time_Left = 0;

        switch (format) {
            case 0:
                //The simplest way to display the time left.
                $("div#ClockCountdown").html(Time_Left + ' seconds');
                break;
            case 1:
                //More detailed.
                Next_time = Time_Left - 1;
                minutes = Math.floor(Time_Left / 60);
                Time_Left %= 60;
                seconds = Time_Left;

                mps = 's';
                sps = 's';
                earlyzero = '';
                latezero = '';
                //ps is short for plural suffix.

                if (minutes == 1) mps = '';
                if (seconds == 1) sps = '';
                if (seconds < 10) earlyzero = '0';
                //                    if(seconds == 10) latezero ='0';

                //                    document.all.countdown.innerHTML = minutes + ' minute' + mps + ' and ';
                //                    document.all.countdown.innerHTML += seconds + ' second' + sps;

                innerHTML = minutes + ':';
                innerHTML += earlyzero + seconds;
                $("div#ClockCountdown").html(innerHTML + "nonbroken!");
                break;
            default:
                $("div#ClockCountdown").html(Time_Left + ' seconds');
        }

        if (Next_time == 0) {
            displaymessage();
            window.location.href = "navigation.php?nav=video_timeout";
        }
        else {
            setTimeout('countdown(' + Next_time + ');', 1000);
        }
    }
}
4

2 に答える 2

1

また、タイムアウトをクリアする必要があります。次のようにします。

var timeout;
function countdown(seconds) {
    if (seconds == "break") {
        clearTimeout(timeout);
    }
    // other things
    if( Next_time == 0) {
        displaymessage();
        window.location.href ="navigation.php?nav=video_timeout";
    } else {
        timeout = setTimeout('countdown(' + Next_time + ');', 1000);
    }
}
于 2012-07-20T19:47:19.200 に答える
0

タイムアウトはワンショットで、タイムアウト関数が呼び出されるとクリアされます。秒 !== 'break' の場合にのみ、次のタイムアウトを設定する必要があります。

    if (Next_time == 0) {
        displaymessage();
        window.location.href = "navigation.php?nav=video_timeout";
    }
    else if (seconds !== 'break') {
        setTimeout('countdown(' + Next_time + ');', 1000);
    }
于 2012-07-20T20:35:53.520 に答える