慕虎3994276
2018-08-25 10:40
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
var num=0;
function startCount() {
document.getElementById('count').value=num;
num=num+1;
document.write(num);
setTimeout("startCount()",1000);
}
</script>
</head>
<body>
<form>
<input type="text" id="count" />
<input type="button" id="kaishi" value="start" onclick="startCount()"/>
</form>
</body>
</html>
不可以使用 document.write 在这个 function 里面, js是一个从上到下的执行语言,第一次执行function时由于有document.write 的原因 原始html文件中的 <form></form>中的所有代码 被 function中的document.write(num); 抹去并替代 所以js 将无法找寻到 id 为 count 的 <input />标签, 从而无法将value 赋给 <input />.
删去 document.write(num);
如一楼所说,在你的实例里,已经实现了无限循环,只是文本框被覆盖了没有显示;
详细点说,当你点击start按钮时,你的文本框和按钮消失了,只显示了1,并不是没有无限调用,而是被document.write(num)输出的“1”覆盖,而不显示了。
不要随意使用document.write(),在HTML文档加载完成后,执行document.write()输出语句会覆盖所有已加载完成的HTML元素,只显示 document.write()输出内容——也就是案例里显示的“1”。
不要在function StartCount里 写任何输出 ,比如你写的document.write(num); 我们写StartCount函数的目的只是单纯的为了修改文本框的值,如果你写了输出语句,浏览器会显示输出语句的内容,但是文本框就不会显示出来了,你就看不到文本框中数字的变化。
settimeout就是用来调一次的 无限调用的要用setinterval
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题