2016-10-02 31 views
-3

我已經多次運行該代碼,試圖修復在代碼中發現的任何錯誤,但它似乎不起作用。我使用JS製作的秒錶不工作

我正在使用setInterval()循環。該功能甚至不運行一次。問題是什麼?

function stopWatch() { 
 

 
    var hours = Number(document.getElementById('hours').innerHTML); 
 
    var minutes = Number(document.getElementById('minutes').innerHTML); 
 
    var seconds = Number(document.getElementById('seconds').innerHTML); 
 

 
    if (seconds<60) { 
 
    seconds++ 
 
    } else { 
 
    seconds = 0; 
 
    minutes++ 
 
    } 
 

 
    if (minutes == 60) { 
 
    minutes = 0; 
 
    hours++ 
 
    } 
 

 
    if (seconds.length==2) { 
 
    document.getElementById('seconds').innerHTML = seconds; 
 
    } else { 
 
    document.getElementById('seconds').innerHTML = '0' + seconds; 
 
    } 
 

 
    if (minutes.length==2) { 
 
    document.getElementById('minutes').innerHTML = minutes; 
 
    } else { 
 
    document.getElementById('minutes').innerHTML = '0' + minutes; 
 
    } 
 

 
    if (hours.length==2) { 
 
    document.getElementById('hours').innerHTML = hours; 
 
    } 
 

 
    if (hours.length==1) { 
 
    document.getElementById('hours').innerHTML = '0' + hours; 
 
    } 
 
    
 
} 
 

 
setInterval(stopWatch,1000)
<html> 
 
<head></head> 
 
<body> 
 
    <p> 
 
     <span id='hours'>00</span>:<span id='minutes'>00</span>:<span id='seconds'>00</span> 
 
    </p> 
 
</body> 
 
</html>

+1

你的代碼只運行一次。你需要使用一些描述的循環。 – Turnip

回答

1

你的代碼只運行一次。你需要使用一些描述的循環。

有很多方法可以做到這一點。一個簡單的例子就是使用setInterval每秒鐘調用你的函數的inners。

您的邏輯中也有錯誤。您不應該檢查號碼的長度(seconds.length==2)。你應該請檢查是否數大於9seconds > 9):

function stopWatch() { 
 

 
    setInterval(function() { 
 

 
    var hours = Number(document.getElementById('hours').innerHTML); 
 
    var minutes = Number(document.getElementById('minutes').innerHTML); 
 
    var seconds = Number(document.getElementById('seconds').innerHTML); 
 

 
    if (seconds < 60) { 
 
     seconds++ 
 
    } else { 
 
     seconds = 0; 
 
     minutes++ 
 
    } 
 

 
    if (minutes == 60) { 
 
     minutes = 0; 
 
     hours++ 
 
    } 
 

 
    if (seconds > 9) { 
 
     document.getElementById('seconds').innerHTML = seconds; 
 
    } else { 
 
     document.getElementById('seconds').innerHTML = '0' + seconds; 
 
    } 
 

 
    if (minutes > 9) { 
 
     document.getElementById('minutes').innerHTML = minutes; 
 
    } else { 
 
     document.getElementById('minutes').innerHTML = '0' + minutes; 
 
    } 
 

 
    if (hours > 9) { 
 
     document.getElementById('hours').innerHTML = hours; 
 
    } else { 
 
     document.getElementById('hours').innerHTML = '0' + hours; 
 
    } 
 

 
    }, 1000); 
 

 
} 
 

 
stopWatch()
<html> 
 

 
<head></head> 
 

 
<body> 
 
    <p> 
 
    <span id='hours'>00</span>:<span id='minutes'>00</span>:<span id='seconds'>00</span> 
 
    </p> 
 
</body> 
 

 
</html>

1

你的意思是爲什麼秒錶沒有運行? 你應該把它包在一個setInteraval爲它每秒更新一次:

setInterval(function() { 
    stopWatch() 
},1000);