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

我定义的函数为什么没有被成功调用

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

    if(num>=5){

        alert("计数结束!");

    }else{

        setTimeout("startCount()", 1000);

    }

  }

  startCount();

</script>

</head>

<body>

<form>

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

</form>

</body>

</html>


正在回答

5 回答

1.我在本机测试的时候并没有跑起来,这是浏览器抛出来的错误

 Uncaught TypeError: Cannot set property 'value' of null


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

作死的花生酱 提问者

我搜了“Cannot set property 'value' of null”,人家说“在执行这段代码的时候.DOM还没有生成,所以会出错.”、“你的代码是当页面HTML加载完js就会执行的。在DOM生成之前就已经执行了(HTML代码加载完不意味着DOM生成了)。DOM还没有生成,就去获取DOM里面的元素,当然也就获取不到了。” 我好像有点知道了^_^谢谢你给的这条错误信息
2016-09-04 回复 有任何疑惑可以回复我~
#2

Blizzard_lihe 回复 作死的花生酱 提问者

没关系,一起加油
2016-09-04 回复 有任何疑惑可以回复我~

只有回答才能收藏,右上角的已关注没有什么作用啊。

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

window.onload = function () {


           var num = 0;

               function startCount() {
                   document.getElementById('count').value = num;
                   num = num + 1;
                   if (num >= 5) {
                       alert("计数结束!");
                   } else {
                       setTimeout(startCount, 1000);
                   }
               }
           startCount();
}

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

作死的花生酱 提问者

蟹蟹0.0
2016-09-04 回复 有任何疑惑可以回复我~
#2

OlderSkee 回复 作死的花生酱 提问者

摸摸 一起加油
2016-09-04 回复 有任何疑惑可以回复我~

首先 因为你的函数需要获取下面的id=“count”

所以你的整个函数需要用window.onload = function(){} 包裹 ,意思是等文档加载完毕才执行JavaScript;

其次

计时器的表示应该是setTimeout(startCount, 1000);

带()表示立即执行, 而按照你的意思是这个是走到else才会执行计时器,所以不需要();


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

http://img1.sycdn.imooc.com//57cbb3ac00011bdf07300393.jpg

在你的代码上改的,

1.把  startCount();换成  setTimeout("startCount()", 1000);

2.只有这样它才能调用里面的函数,制造一个向上的循环。第二个  setTimeout("startCount()", 1000);在网页加载出来先被调用一次,然后调用里面那个  setTimeout("startCount()", 1000);


     望采纳!

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

作死的花生酱 提问者

我把“startCount();”换成“setTimeout("startCount()", 0);”,这样是能运行起来的,但是我不懂,为啥我不能直接调用startCount()函数。QAQ
2016-09-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我定义的函数为什么没有被成功调用

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