2014-01-23 137 views
0

我可以阻止它,但是如何讓它在啓動函數的當前時間再次啓動?爲什麼這不起作用?如何在停止後使用setInterval()重新啓動時鐘

<!DOCTYPE> 
<html> 
<head> 
</head> 
<body> 
    <p id="demo"></p> 
    <button onclick="stopFunction()">Stop time</button> 
    <button onclick="startFunction()">Start time</button> 
</body> 
</html> 

的JavaScript:

var myVar = setInterval(function() { 
    myTimer(); 
}, 1000); 

function myTimer() { 
    var d = new Date(); 
    var t = d.toLocaleTimeString(); 
    document.getElementById("demo").innerHTML = t; 
} 

function stopFunction() { 
    clearInterval(myVar); 
} 

function startFunction() { 
    document.getElementById("demo").innerHTML = t; 
} 
+0

在'startFunction'您需要再次重新設置'myVar'給setInterval寫一些邏輯。另外,在'startFunction'中你引用了't',它沒有被作用於那個函數,所以它總是未定義的。 – lemieuxster

回答

1

編輯:我扔了一些代碼來禁用啓動按鈕,當它運行。這是一個好主意,要做到這一點,或者在不保持通話setInterval每次廣告點擊/時間運行

<!DOCTYPE> 
<html> 
<head> 
</head> 
<body> 
    <p id="demo"></p> 
    <button id='stopButton' onclick="stopFunction()">Stop time</button> 
    <button id='startButton' onclick="startFunction()">Start time</button> 

<script type='text/javascript'> 
var myVar; 

function myTimer() { 
    var d = new Date(); 
    var t = d.toLocaleTimeString(); 
    document.getElementById("demo").innerHTML = t; 
} 

function stopFunction() { 
    clearInterval(myVar); 
    document.getElementById("startButton").disabled = false; 
} 

function startFunction() { 
    myVar = setInterval(myTimer, 1000); 
    document.getElementById("startButton").disabled = true; 

} 

startFunction(); 
</script> 
</body> 
</html> 
+0

呃,你的答案是100%一樣的我的... –

+0

@DonRhummy不完全。即使在編輯之前,它也不完全一樣。 –

1

它改成這樣:

var t = d.toLocaleTimeString(); 

function myTimer() 
{ 
    var d; 

    d = new Date(); 
    t = d.toLocaleTimeString(); 
    document.getElementById("demo").innerHTML = t; 
} 

var myVar = setInterval(myTimer, 1000); 

function stopFunction() 
{ 
    clearInterval(myVar); 
} 

function startFunction() 
{ 
    document.getElementById("demo").innerHTML = t; 

    //Restart it here 
    myVar = setInterval(myTimer, 1000); 
} 

的問題是,你沒有重新啓動的時間間隔。現在這樣做。

+0

這很好,但startFunction()中的「t」未定義,因爲它位於myTimer()函數的作用域中。 – pid

+0

@pid好趕上。 –

+0

@DonRhummy實際上沒有理由甚至沒有在'startFunction'中的第一行,因爲myTimer將在第二秒內更新 –

相關問題