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

没感觉这样写有什么问题呢,为什么执行不了

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>
<script type="text/javascript">
  var num=0;
  function startCount() {
    document.getElementById('count').value=num;
    num=num+1;
    setTimeout("startCount()",1000); 
  }
//setTimeout("startCount()",1000) ;  
startCount();
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>

如题,代码如上。

正在回答

8 回答

Javascript代码是顺序执行的,而你在调用startCount的时候还没有加载完,找不到对象ID'count',所以肯定出不来结果。而setTimeout("startCount()",1000) ;因为有延迟,当它调用startCount时,此时代码已经加载完,所以工作起来没什么问题

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

乖乖小宇宙的围脖

讲的好
2016-05-02 回复 有任何疑惑可以回复我~
#2

garnett555 提问者

非常感谢!
2016-05-02 回复 有任何疑惑可以回复我~
#3

真水无香3124609

果然把整个script放到input标签后面就能执行了
2016-05-04 回复 有任何疑惑可以回复我~
#4

真水无香3124609 回复 真水无香3124609

不过函数里面有个setTimeout()延迟,执行还是达不到直接用两个setTimeout()的效果
2016-05-04 回复 有任何疑惑可以回复我~
查看1条回复

楼上讲的对哦,楼主你可以把script放在body最下面试试,按这样的写法就正确啦

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

我也是这样写的 但是一开始执行不起 后来又能执行了 是什么鬼。。不懂

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

因为你的startCount这个函数没有被调用啊····

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

garnett555 提问者

调用了呀,在注释的下一行
2016-04-26 回复 有任何疑惑可以回复我~

你这样写是不能调用函数的,全局函数才可以这样调用,要有输入值返回值,

这种函数的调用要用window.onload函数,

你把你的15行改为window.onload=startCount;

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

garnett555 提问者

可以执行的是注释那行的代码,我想试试我自己写的去掉定时器的注释下面那行的代码,没觉得有什么问题。。。
2016-04-26 回复 有任何疑惑可以回复我~
#2

qq_吃药先森_03169839 回复 garnett555 提问者

就是你的15行无法直接调用
2016-04-26 回复 有任何疑惑可以回复我~
#3

garnett555 提问者 回复 qq_吃药先森_03169839

按你说的试了,好神奇。。。为什么呢
2016-04-26 回复 有任何疑惑可以回复我~
#4

qq_吃药先森_03169839 回复 garnett555 提问者

因为不是全局函数,无法直接调用
2016-04-27 回复 有任何疑惑可以回复我~
查看1条回复

感觉好像是因为startCount这个函数调用问题。。。

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

你的第十行写反了吧!num是什么?把它赋值ID为“count”有什么意义?

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

garnett555 提问者

再好好看看吧。。。
2016-04-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

没感觉这样写有什么问题呢,为什么执行不了

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