2012-02-09 160 views
0

當我按下按鈕時,我想開始計數,並且當我再次按下時停止計數。我知道用一個按鈕onclick事件工作兩個功能,它與「;」分開。任何建議?此代碼適用於每個函數有兩個按鈕。 在此先感謝。帶兩個功能的一個按鈕

<form> 
<input type="button" value="Start count!" onclick="doTimer();stopCount();" /> 
</form> 

javascript代碼:

var c=0; 
var t; 
var timer_is_on=0; 

function timedCount() 
{ 
document.getElementById('txt').value=c; 
c=c+1; 
t=setTimeout("timedCount()",1000); 
} 

function doTimer() 
{ 
if (!timer_is_on) 
{ 
timer_is_on=1; 
timedCount(); 
} 
} 

function stopCount() 
{ 
clearTimeout(t); 
timer_is_on=0; 
} 

回答

0

下面是我未經測試的解決方案,其中包含一些提示,以便您採取措施。

首先,我認爲你大概可以擺脫<form></form>標籤。

其次,你可能會發現它有助於讓你的變量有意義的名稱,而不是僅僅ct

第三,改變計時器是上一個布爾值:var timer_is_on = false;

Fouth更改按鈕,這樣的:<input type="button" value="Start count!" onclick="doTimer();" />

第五本替換代碼:

function doTimer(){ 

    if(timer_is_on){ 

    // Code to start the timer 
    // and any other code you want 

    timer_is_on = false; 

    }else{ 

    // Code to stop the timer 
    // and any other code you want 

    timer_is_on = true; 

    } 

} 
+0

謝謝Adjam。你幫我做出改變! – billaki 2012-02-09 18:27:40

+0

也可以在將來縮進你的代碼,它會讓你的生活更輕鬆 – Adjam 2012-02-09 20:06:08

3

怎麼是這樣的:

onclick="handleClick();" 

而且你的JS:

function handleClick() { 
    if (timer_is_on) { 
    timer_is_on = false; 
    clearTimeout(t); 
    } else { 
    timer_is_on = true; 
    timedCount(); 
    } 
} 
+0

謝謝回答!我進行更改,現在並且永不停止,當我按下按鈕兩次。爲什麼?也是最後的「)」是不必要的。 – billaki 2012-02-09 18:15:50

+0

不確定。代碼*應該*工作。 – Blender 2012-02-09 18:17:42

+0

這是我的錯。這是完美的工作。再次感謝! – billaki 2012-02-09 18:25:57

1

,將調用一個後立即另一方面,這沒有意義。

使用單個函數,檢查標誌的值,並執行相應的操作。