2012-02-09 111 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

,将调用一个后立即另一方面,这没有意义。

使用单个函数,检查标志的值,并执行相应的操作。