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

来源:8-5 计时器setTimeout()

作死的花生酱

2016-09-04 12:59

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

  • Blizzard_lihe
    2016-09-04 14:01:48
    已采纳

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

     Uncaught TypeError: Cannot set property 'value' of null


    Blizza... 回复作死的花生酱

    没关系,一起加油

    2016-09-04 14:21:25

    共 2 条回复 >

  • JustDoItImooc
    2016-09-27 00:49:13

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

  • OlderSkee
    2016-09-04 17:24:11

    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();
    }

    OlderS... 回复作死的花生酱

    摸摸 一起加油

    2016-09-04 18:28:32

    共 2 条回复 >

  • OlderSkee
    2016-09-04 17:23:52

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

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

    其次

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

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


  • Blizzard_lihe
    2016-09-04 13:44:06

    http://img.mukewang.com/57cbb3ac00011bdf07300393.jpg

    在你的代码上改的,

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

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


         望采纳!

    作死的花生酱

    我把“startCount();”换成“setTimeout("startCount()", 0);”,这样是能运行起来的,但是我不懂,为啥我不能直接调用startCount()函数。QAQ

    2016-09-04 13:51:37

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468197 学习 · 21891 问题

查看课程

相似问题