js定时器setInterval多次调用同一个方法导致时间过快问题分析

编程入门 行业动态 更新时间:2024-10-05 05:23:19

js<a href=https://www.elefans.com/category/jswz/34/1768139.html style=定时器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多次调用同一个方法导致时间过快问题分析

本文发布于:2024-02-28 05:45:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768257.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:定时器   过快   时间   方法   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!