问答详情
源自:-

请问老师可以直接调用一个调用其自身的函数吗?

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>   
  <title>浏览器对象</title>  
 </head>
 <body>
 <script type="text/javascript">  
    ctime();
    var num=5;
    function ctime()
    {
        document.getElementById("b").innerHTML=num;
        num=num-1;
        setTimeout("ctime()",1000);
        if(num==0)
        {
    	    window.location.href="http://www.imooc.com"
        }
    }
 </script> 
    <span id="b">5</span>秒后回到主页 <a href=javascript:window.history.back()>返回</a>  
</body>
</html>

打开界面后,时间不会变,也不会有任何动作,但是使用一个按键来调用函数时,时间就会改变

提问者:慕粉3736843 2016-08-05 17:12

个回答

  • 水里有条鱼
    2016-08-06 09:06:53
    已采纳

    啊,我那时好像看漏了没仔细看,不好意思。你错的地方应该是函数ctine里document.getElementById("b").innerHTML=num;这句,因为如果你在script里使用ctime();调用的话因为它下面的span还没加载,所以得不到对象,出现错误。两种解决方法:

    第一加上window.onload = function(){}调用

        var num=5;

        function ctime()

        {

            document.getElementById("b").innerHTML=num;

            num=num-1;

            if(num==0)

            {

                window.location.href="http://www.imooc.com"

            }

            setTimeout("ctime()",1000); 

        }

        window.onload= function(){

            ctime();

        }

    第二把span放前面

     <span id="b">5</span>秒后回到主页 <a href=javascript:window.history.back()>返回</a>  

     <script type="text/javascript">  

        var num=5;

        function ctime()

        {

            document.getElementById("b").innerHTML=num;

            num=num-1;

            if(num==0)

            {

                window.location.href="http://www.imooc.com"

            }

            setTimeout("ctime()",1000); 

        }

            ctime();

     </script> 


  • 水里有条鱼
    2016-08-05 19:50:25

    你没调用函数,函数不执行,当然什么都不会发生。你现在只是做了声明而已,ctime();才是调用,在这里可以用setInterval()来调用