0

秒、分、時間のストップウォッチを作っています。時間が 59 になったらストップウォッチをリセットして再起動したい。また、分が 59 になったら、時針を増やしたい。うまくいかないようです。左の「針」は、もしそうなら、増加しません..私がそれを望んでいると述べたとしても。

SETTIMEOUT の SPEED "5" に注意してください。テスト時間までスピードアップしました。「1000」である必要があります。

HTML:

    <ul>

        <li id="hour-greater">0</li>
        <li id="hour-lesser">0</li>
        <li>:</li>
        <li id="min-greater">0</li>
        <li id="min-lesser">0</li>
        <li>:</li>
        <li id="sec-greater">0</li>
        <li id="sec-lesser">0</li>

    </ul>

JS:

(function() {

    var secLesser = document.getElementById("sec-lesser").value,
    secGreater = document.getElementById("sec-greater").value,
    minLesser = document.getElementById("min-lesser").value,
    minGreater = document.getElementById("min-greater").value,
    hourLesser = document.getElementById("hour-lesser").value,
    hourGreater = document.getElementById("hour-greater").value;


    function stopWatch(){
        secLesser++;
        if(secLesser > 9) {
            secLesser = 0;
            secGreater++;
        } else if(secGreater + secLesser == 14){
            secGreater = 0;
            secLesser = 0;
            minLesser++;
        } else if(minLesser > 9){
            minLesser = 0;
            minGreater++;
        } else if(minGreater + minLesser == 14){
            secGreater = 0;
            secLesser = 0;
            hourLesser++;
        } else if(hourLesser > 9){
            hourLesser = 0;
            hourGreater++;
        } else if(hourGreater + hourLesser == 14){
            alert("It's been 59 hours... leave this page!");
        } 

        document.getElementById("sec-lesser").textContent = secLesser;
        document.getElementById("sec-greater").textContent = secGreater;
        document.getElementById("min-lesser").textContent = minLesser;
        document.getElementById("min-greater").textContent = minGreater;
        document.getElementById("hour-lesser").textContent = hourLesser;
        document.getElementById("hour-greater").textContent = hourGreater;
        window.setTimeout(stopWatch, 5);
    }

    stopWatch();
})();
4

1 に答える 1

1

あなたが持っている部分

} else if(minGreater + minLesser == 14){
            secGreater = 0;
            secLesser = 0;
            hourLesser++;

secGreater/secLesser ではなく、minGreater と minLesser をリセットする必要があります。次のように変更します。

} else if(minGreater + minLesser == 14){
            minGreater = 0;
            minLesser = 0;
            hourLesser++;

ああ、setTimeout/setInterval のより良い代替手段としてrequestAnimationFrameを調べてください。

于 2013-07-16T19:53:47.573 に答える