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

来源:8-17 编程练习

我们的洗手间

2016-03-20 12:50

代码如下,将倒数时间以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回答

  • J_一切随缘
    2016-03-20 21:02:15

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

    我们的洗手间

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

    2016-03-20 21:50:24

    共 1 条回复 >

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题