- PHP code
<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
------解决方案--------------------
请把setInterval放在函数外面
------解决方案--------------------
将setInterval和clearInterval改为setTimeout和clearTimeout即可,楼上的说法也可以。
------解决方案--------------------
楼主的逻辑好像有点问题。。我这样写可以实现
- HTML code
<div id="divD" onclick="dao.start(10)">执行10次</div>
------解决方案--------------------
楼主,其实没有那么的复杂,给你个简单的:
- HTML code
<!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>
------解决方案--------------------
- HTML code
<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>