Javascript秒表不从零开始
我这里有一个基本的秒表,但问题是我认为它在页面加载时开始计数,而不是单击开始按钮时开始计数。同样,当您重置并再次启动时,同样的问题也会发生Javascript秒表不从零开始,javascript,onclick,stopwatch,Javascript,Onclick,Stopwatch,我这里有一个基本的秒表,但问题是我认为它在页面加载时开始计数,而不是单击开始按钮时开始计数。同样,当您重置并再次启动时,同样的问题也会发生 <form> <input type="button" value="Start count!" onclick="doTimer()" /> <input type="text" id="txt" /> <input type="button" value="Stop count!" onc
<form>
<input type="button" value="Start count!" onclick="doTimer()" />
<input type="text" id="txt" />
<input type="button" value="Stop count!" onclick="stopCount()" />
<input type="button" value="Reset!" onclick="resetCount()" />
</form>
<script type="text/javascript">
var start = new Date().getTime();
var elapsed = '0.0';
var t;
var timer_is_on=0;
function timedCount() {
var time = new Date().getTime() - start;
elapsed = Math.floor(time / 100) / 10;
if(Math.round(elapsed) == elapsed) { elapsed += '.0'; }
document.getElementById('txt').value=elapsed;
t=setTimeout("timedCount()",50);
}
function doTimer() {
if (!timer_is_on) {
timer_is_on=1;
timedCount();
}
}
function stopCount() {
clearTimeout(t);
timer_is_on=0;
}
function resetCount() {
document.getElementById('txt').value='0.0';
var elapsed = '0.0';
}
</script>
var start=new Date().getTime();
var运行时间='0.0';
变量t;
var定时器_为_on=0;
函数timedCount(){
var time=new Date().getTime()-start;
经过=数学楼层(时间/100)/10;
if(Math.round(appeased)=appeased){appeased+='.0';}
document.getElementById('txt')。值=已用时间;
t=设置超时(“timedCount()”,50);
}
函数doTimer(){
如果(!计时器打开){
定时器_为_开=1;
timedCount();
}
}
函数stopCount(){
清除超时(t);
定时器_为_开=0;
}
函数resetCount(){
document.getElementById('txt')。value='0.0';
var运行时间='0.0';
}
我尝试过在单击start按钮时定义start变量,但迄今为止没有太多成功。非常感谢您提供的任何帮助。您遇到的问题是在页面加载后立即录制
start
,而不是在用户实际单击开始按钮时录制。要记录用户实际单击按钮时的开始时间,请将doTimer
功能更改为以下选项
function doTimer() {
if (!timer_is_on) {
start = new Date().getTime();
timer_is_on=1;
timedCount();
}
}
您必须在
doTimer()中包含另一个重置:
查看正在运行的版本。您是否可以尝试包括start=new Date().getTime()
在doTimer()
中?我刚刚试过,它使秒表停止工作。我不明白,你说的似乎很有道理,但JS没有任何意义@Howard-是的,这解决了它:)酷酷请将函数传递给setTimeout而不是字符串。啊,当我第一次尝试时,它不起作用的原因是因为我把var start放在了前面,而不是刚开始。谢谢
function doTimer() {
if (!timer_is_on) {
start = new Date().getTime();
timer_is_on=1;
timedCount();
}
}