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

计时器函数为什么不能在js里直接用 函数名() 调用

<script type="text/javascript">
  var num=1;

  function startCount() {
  document.getElementById("count").value=num;
    num=num+1;
    setTimeout(startCount,1000);
  }
    startCount();
 // setTimeout("startCount()",1000);
</script>


正在回答

3 回答

你如果这样子调用,需要把这段代码放在</body>之前。就像这样:

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>计时器</title>

</head>

<body>

<form>

<input type="text" id="count"  />

</form>

<script type="text/javascript">

  var num=1;

  function startCount() {

  document.getElementById("count").value=num;

    num=num+1;

    setTimeout(startCount,1000); 

  }

    startCount();

 // setTimeout("startCount()",1000); 

</script>

</body>

</html>

具体原因:

首先,这里script位置在代码前面,按照页面加载顺序,从上往下;

如果用 startCount(),当加载到document.getElementById('count')这一句的时候,并不能获取到body里面的元素(因为还没加载到),所以会报错;

因为如果用 setTimeout("startCount()",1000),意思延迟1秒钟再去执行startCount函数,在这1秒钟内,body里面的元素已经加载完毕,再去执行startCount函数就能够正常执行document.getElementById('count');

这就是原因,改进办法很简单,直接将整个<script>放到</body>上方即可


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

AaronWell

请问为什么要在函数外面用到setTimeout("startCount()",1000)
2016-11-28 回复 有任何疑惑可以回复我~
#2

老友丶 回复 AaronWell

你如果不调用,那么函数第一次在哪里执行啊? HTML中也没有事件。意思你写的js代码毫无用处。
2016-11-29 回复 有任何疑惑可以回复我~

请问为什么要在函数外面用到setTimeout("startCount()",1000)

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

6666

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

举报

0/150
提交
取消

计时器函数为什么不能在js里直接用 函数名() 调用

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