javascript中的计时器工作
在我的项目中,我使用的计时器在单击开始按钮时运行,在单击结束按钮时停止 问题是在双击或多次单击“开始”按钮时出错。额外花费的时间为+1000毫秒,并且开始运行的速度更快。这种情况不应发生 我的javascript是javascript中的计时器工作,javascript,html,Javascript,Html,在我的项目中,我使用的计时器在单击开始按钮时运行,在单击结束按钮时停止 问题是在双击或多次单击“开始”按钮时出错。额外花费的时间为+1000毫秒,并且开始运行的速度更快。这种情况不应发生 我的javascript是 <script type="text/javascript"> var sec = 0; var min = 0; var hour = 0; function stopwatch(text) { sec++; if (sec == 60) {
<script type="text/javascript">
var sec = 0;
var min = 0;
var hour = 0;
function stopwatch(text) {
sec++;
if (sec == 60) {
sec = 0;
min = min + 1;
} else {
min = min;
}
if (min == 60) {
min = 0;
hour += 1;
}
if (sec<=9) { sec = "0" + sec; }
document.getElementById("starttime").innerHTML = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec;
SD=window.setTimeout("stopwatch();", 1000);
}
function f3() {
clearTimeout(SD);
}
</script>
<form name="clock">
<div id="starttime" style="font-size:large; "></div>
<input type="button" name="theButton" id="Start" value="Start" onClick="stopwatch(this.value);" />
<input type="button" name="theButton" id="end" value="Stop" onClick="f3();" />
</form>
。。。。但是它不工作不要直接调用stopwatch()
调用其他检查SD
s状态的程序,然后调用stopwatch()
var-sec=0;
var min=0;
var小时=0;
var-SD;
函数startStopWatch(){
如果(!SD){
秒表();
}
}
功能秒表(){
sec++;
如果(秒=60){
秒=0;
min=min+1;}
否则{
min=min;}
如果(最小==60){
最小值=0;
小时+=1;}
如果(sec您可以这样做:
var SD;
function stopwatch(text) {
if (SD && text) {
return;
}
....
}
function f3() {
clearTimeout(SD);
SD = false;
sec = 0;
min = 0;
hour = 0;
}
也就是说,当点击按钮时,您可以检查超时是否已经在运行,如果需要,可以取消执行
您可以在更新时进行测试。@Tommi已经回答了我的问题。谢谢您…它工作正常。我还有一个问题…当按下停止按钮时,计时器停止…然后再次按下启动按钮,计时器从停止值开始启动。计时器不应该正常启动…但我必须保存停止时间(SD)数据库如何将停止时间值从脚本移动到主控制器。@GopalaKrishnan这将是一个完全不同的问题。我建议阅读AJAX,并在遇到任何问题时发布一个新问题。谢谢…工作正常..我还有一个问题…当按下停止按钮时计时器停止…然后再次艺术按钮被按下,计时器从停止值开始。计时器不应该开始。你没有告诉它应该从哪里开始,所以我认为这是默认操作。如果你想再次从0:0:0
开始,只需在f3()
中将所有时间变量设置为0
。它工作正常…但我必须节省停止时间(SD)数据库如何将停止时间的值从脚本移动到主控制器。@GopalaKrishnan好吧,对于原始问题,您有两个可行的答案,请接受其中一个。然后您最好问另一个关于数据库保存的问题,在您的原始问题中,甚至没有提到数据库。。。
<input type="button" name="theButton" id="Start" value="Start" onClick="startStopWatch();" />
var sec = 0;
var min = 0;
var hour = 0;
var SD;
function startStopWatch(){
if (!SD){
stopwatch();
}
}
function stopwatch() {
sec++;
if (sec == 60) {
sec = 0;
min = min + 1; }
else {
min = min; }
if (min == 60) {
min = 0;
hour += 1; }
if (sec<=9) { sec = "0" + sec; }
document.getElementById("starttime").innerHTML = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec;
SD=window.setTimeout(stopwatch, 1000);
}
function f3() {
if (SD){
clearTimeout(SD);
}
}
var SD;
function stopwatch(text) {
if (SD && text) {
return;
}
....
}
function f3() {
clearTimeout(SD);
SD = false;
sec = 0;
min = 0;
hour = 0;
}