为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不能无限调用?是不是编辑器问题?

<!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>


正在回答

5 回答

不可以使用 document.write 在这个 function 里面, js是一个从上到下的执行语言,第一次执行function时由于有document.write 的原因 原始html文件中的 <form></form>中的所有代码 被 function中的document.write(num); 抹去并替代 所以js 将无法找寻到 id 为 count 的 <input />标签, 从而无法将value 赋给 <input />.

0 回复 有任何疑惑可以回复我~

删去 document.write(num);

如一楼所说,在你的实例里,已经实现了无限循环,只是文本框被覆盖了没有显示;

详细点说,当你点击start按钮时,你的文本框和按钮消失了,只显示了1,并不是没有无限调用,而是被document.write(num)输出的“1”覆盖,而不显示了。

 不要随意使用document.write(),在HTML文档加载完成后,执行document.write()输出语句会覆盖所有已加载完成的HTML元素,只显示 document.write()输出内容——也就是案例里显示的“1”。


0 回复 有任何疑惑可以回复我~

不要在function StartCount里 写任何输出 ,比如你写的document.write(num);  我们写StartCount函数的目的只是单纯的为了修改文本框的值,如果你写了输出语句,浏览器会显示输出语句的内容,但是文本框就不会显示出来了,你就看不到文本框中数字的变化。 

1 回复 有任何疑惑可以回复我~

settimeout就是用来调一次的   无限调用的要用setinterval

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不能无限调用?是不是编辑器问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信