定时器setInterval多次调用同一个方法导致时间过快问题分析"/>
js定时器setInterval多次调用同一个方法导致时间过快问题分析
最近做项目需要用到setInterval的倒计时功能,项目是通过类似iframe的技术打开功能页面,每次关闭调用interval的页面重新打开后会导致计时过快,最后发现每次使用interval之前将以前调用的同一个interval关闭即可解决,本文的解决方案是先通过变量记录下每次打开的interval,再打开相同interval的时候关闭已经记录的定时器即可。大家也可以使用下面的测试代码理解下
<button id="refreshBtn">刷新</button>
<button onclick='startInterval("t1")'>启动T1</button>
<button onclick='startInterval("t2")'>启动T2</button>
<button onclick='stopInterval("t1")'>停止T1</button>
<button onclick='stopInterval("t2")'>停止T2</button>
<p id="t1">倒计时:300</p>
<p id="t2">倒计时:300</p>
<script src=".1.4/jquery.min.js"></script>
<script>var SysSecond = {"init" : 300};//先给变量初始化,防止后续报错var InterValObj = {"init" : "fun"};function startInterval(pDom) {SysSecond[pDom] = 300; //这里获取倒计时的起始时间 单位:秒InterValObj[pDom] = window.setInterval(function() {repeatFun(pDom)}, 1000);}function stopInterval(pDom) {window.clearInterval(InterValObj[pDom]);$("#" + pDom).html("倒计时:300");}$("#refreshBtn").click(function() {location.reload();})function repeatFun(pDom) {SysSecond[pDom] --;if (SysSecond[pDom] > 0) {$("#" + pDom).html("倒计时:" + SysSecond[pDom]);} else {window.clearInterval(InterValObj[pDom]);$("#" + pDom).html("计时结束");}}
</script>
有更好的方法,也欢迎一起讨论沟通。^_^
更多推荐
js定时器setInterval多次调用同一个方法导致时间过快问题分析
发布评论