<html>
<head>
<script language="JavaScript">
var c1 = 0;
var c2 = 0;
var c3 = 0;
var o1 = 0;
var o2 = 0;
var o3 = 0;
ID = window.setTimeout("start();", 100);
function start() {
if (c1 == 59) {
c1 = 00;;
if (c2 == 59) {
c2 = 00;
}
else c2++;
}
else c1++;
if (c1 == 0 || c1 == 1 || c1 == 2 || c1 == 3 || c1 == 4 || c1 == 5 || c1 == 6 || c1 == 7 || c1 == 8 || c1 == 9) o1 = "0" + c1;
else o1 = c1;
if (c2 == 0 || c2 == 1 || c2 == 2 || c2 == 3 || c2 == 4 || c2 == 5 || c2 == 6 || c2 == 7 || c2 == 8 || c2 == 9) o2 = "0" + c2;
else o2 = c2;
if (c3 == 0 || c3 == 1 || c3 == 2 || c3 == 3 || c3 == 4 || c3 == 5 || c3 == 6 || c3 == 7 || c3 == 8 || c3 == 9) o3 = "0" + c3;
else o3 = c3;
document.forms[0].elements[0].value = o3 + ":" + o2 + ":" + o1;
ID = window.setTimeout("start();", 100);
}
</script>
</head>
<body>
<form name="frm1">
<input type="text" name="timer1">
<input type="button" name="but1" value="start" onClick="c1=0; c2=0; c3=0; o1=0; o2=0;
o3=0; start();">
<input type=button name="but2" value="stop" onClick="window.clearTimeout(ID);">
</form>
</body>
</html>
状态栏给出错误:对象不支持此操作。
答案 0 :(得分:1)
您应该传递函数参考。
改为:
ID = window.setTimeout("start();", 100);
到
ID = window.setTimeout(start, 100);
请注意,这是一个非常“缺乏吸引力”的代码...
if (c1 == 0 || c1 == 1 || c1 == 2 || c1 == 3 || c1 == 4 || c1 == 5 || c1 == 6 || c1 == 7 || c1 == 8 || c1 == 9)
您可以简单地检查边界:
if (c1 >= 0 && c1 <= 9)
o1="0"+c1;
答案 1 :(得分:1)
您在Internet Explorer中收到错误,因为浏览器本身或jsFiddle已经使用了变量start
。在您使用它来定义函数之后,由于某种原因将其更改为包含字符串"fileopen"
的变量。
如果您将函数start
重命名为其他内容,则可以正常运行:
http://jsfiddle.net/Guffa/yqsmy/
无论如何,你应该使用间隔而不是超时:
使用Javascript:
var c1, c2, c3, ID = null;
startTimer();
function startTimer() {
if (ID != null) {
stopTimer();
}
c1 = 0;
c2 = 0;
c3 = 0;
ID = window.setInterval(run, 100);
}
function stopTimer() {
window.clearInterval(ID);
ID = null;
}
function run() {
c1++;
if (c1 == 60) {
c1 = 0;
c2++;
if (c2 == 60) {
c2 = 0;
}
}
var o1 = (c1 <= 9 ? "0" : "") + c1;
var o2 = (c2 <= 9 ? "0" : "") + c2;
var o3 = (c3 <= 9 ? "0" : "") + c3;
document.forms[0].elements[0].value = o3 + ":" + o2 + ":" + o1;
}
HTML:
<form name="frm1">
<input type="text" name="timer1">
<input type="button" name="but1" value="start" onclick="startTimer();">
<input type="button" name="but2" value="stop" onclick="stopTimer();">
</form>
演示:http://jsfiddle.net/Guffa/B4a54/7/
如果您希望计时器完全,您应该将开始时间保存在变量中,然后从当前时间中减去该时间以获得经过的时间,并且仅使用时间间隔来显示经过的时间。
答案 2 :(得分:0)
更改此
<input type="button" name="but1" value="start" onClick="c1=0; c2=0; c3=0; o1=0; o2=0; o3=0; start();">
到这个
<input type="button" name="but1" value="start" onClick="c1=0; c2=0; c3=0; o1=0; o2=0; o3=0; window.clearTimeout(ID); ID=window.setTimeout('start();',100); start();">
答案 3 :(得分:0)
Here is an improved timer example
已经使用jquery完成了,但没有任何库,这不是一个问题。还解决了双重启动点击问题:)
您也可以更改setInterval - 仅在计时器工作时调用它并在停止时清除它。所有这一切都取决于你。