<script type="text/javascript">
function dao(timeDao)
{
var sh=null;
divD.innerText=timeDao;
if(timeDao==0)
{
clearInterval(sh1);
return;
sh=1;
}
timeDao--;
if(sh==null){
sh1=setInterval("dao("+timeDao+")",100);
}
}
</script>
<div id="divD" onclick="dao(10,null)">执行10次</div>写了一个js代码,如上面的代码想达到效果:每次点击<div id="divD" onclick="dao(10,null)">执行10次</div>[/code]
页面都能自动依次显示:10,9,8,7,6,5,4,3,2,1,0
可我代码好像有问题,显示到10,9.。0,都没有问题
问题1:页面到0的时候不停止,继续乱跳,什么原因?
问题2:怎么显示每次点击都会自动再执行一次10,9,8,7.1,0

 

解决方案 »

  1.   

    将setInterval和clearInterval改为setTimeout和clearTimeout即可,楼上的说法也可以。
      

  2.   

    for循环10次不就结了 还搞个setInterval
      

  3.   

    楼主的逻辑好像有点问题。。我这样写可以实现
    <div id="divD" onclick="dao.start(10)">执行10次</div>
    var dao = function (){
    var timeObj,
    el = document.getElementById("divD"),
    num = 0;
    function fn(){
    if (!num){
    clearInterval(timeObj);
    }
    el.innerHTML = num--;
    }
    return {
    start : function(_num){
    num = _num;
    timeObj = setInterval(function(){
    fn();
    },100)
    },
    stop : function(){
    clearInterval(timeObj);
    }
    }
    }()
      

  4.   

    楼主的逻辑好像有点问题。。我这样写可以实现
    <div id="divD" onclick="dao.start(10)">执行10次</div>
    var dao = function (){
    var timeObj,
    el = document.getElementById("divD"),
    num = 0;
    function fn(){
    if (!num){
    clearInterval(timeObj);
    }
    el.innerHTML = num--;
    }
    return {
    start : function(_num){
    num = _num;
    timeObj = setInterval(function(){
    fn();
    },100)
    },
    stop : function(){
    clearInterval(timeObj);
    }
    }
    }()
      

  5.   

    function dao(num){
    num+=1;
    while(num-->0){
    document.getElementById('div1').innerHTML+=num+",";
    };
    };
    有那么复杂么
      

  6.   

    楼主,其实没有那么的复杂,给你个简单的:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cn">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
    <title></title>
    </head>
    <body><script type="text/javascript">
    function dao(timeDao){
    document.getElementById("divD").innerHTML = timeDao;
    timeDao--;
    if(timeDao >= 0 ){
    setTimeout(function(){
    dao(timeDao);
    }, 1000);
    }
    }
    </script><div id="divD" onclick="dao(10)">执行10次</div>


    </body>
    </html>
      

  7.   

    setTimeout
      

  8.   

        <div id="divD" onclick="dao(10,this)">执行10次</div>
        <script type="text/javascript">
    function dao(timeDao, elem)
    {
        var timer = setInterval(function(){
         if(timeDao >= 0){
         elem.innerHTML = timeDao;
         timeDao--;
        }else{
         clearInterval(timer);
        }
        }, 100);
    }
    </script>