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

为什么将倒数代码函数设置传递参数就不能倒数了呢

代码如下,将倒数时间以num传递到倒数函数dCount中,无法实现倒数。

!DOCTYPE html>

<html>

 <head>

  <title>浏览器对象</title>  

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

 </head>

 <body>


  <h2>操作成功</h2>

  <span id="second"></span>秒后返回主页 <a href="javascript:bcak()">返回</a>

  <script type="text/javascript">  

dCount(5);

function dCount(num){

     var i;

     if(num>0){

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

     num--;

     i=setTimeout("dCount(num)",1000);

     }

     else{

        clearTimeout(i);

        window.open("www.imooc.com","_self");

     }

}

function back(){

    window.history.back();

}

   

 </script> 

</body>

</html>


正在回答

1 回答

i=setTimeout("dCount(num)",1000);这一句的递归没有执行,去掉“”应该可以

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

我们的洗手间 提问者

按照你的建议,删除“”并没有成功,但是你的回答很有启发性。查了一下setTimeout的参数,书上说:“setTimeout的第一个参数可以使用字符串传入,如果这样做,这个字符串会进行求值,相当于eval()”。 而eval()函数是将括号里的字符串转为代码执行,也就是说eval("dCount(num)")就会执行dCount(num);。我将eval("dCount(num)")放到函数外面,发现可以正确执行出函数,所以i=setTimeout("dCount(num)",1000)没有被执行的原因应该并不在于识别不出这个函数。
2016-03-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么将倒数代码函数设置传递参数就不能倒数了呢

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