关于JS定时刷新的问题,只允许刷新一次,求大侠们来帮帮忙
这一段是我写的定时刷新,但是这样会每隔7500ms就刷新,我现在是想在停户后只刷新一次就行,那这段代码应该怎么改,下面是页面截图:在点“是”后就刷新一次页面就行下面是这个...
这一段是我写的定时刷新,但是这样会每隔7500ms就刷新,我现在是想在停户后只刷新一次就行,那这段代码应该怎么改,下面是页面截图:
在点“是”后就刷新一次页面就行
下面是这个页面的部分代码 展开
在点“是”后就刷新一次页面就行
下面是这个页面的部分代码 展开
3个回答
展开全部
可以考虑使用setTimeOut
你这个代码的问题,我分析,是因为每次页面刷新以后,你的定时器id都会被重新赋值为undefined
而你在页面加载时就会执行你自定义的定时器代码,代码内判断定时器id的条件语句永远不会成立,所以是不会清除定时器的
总的来说,http无状态造成的
如果一定要使用setinterval,你需要区分刷新页面后和刷新前的状态,这恐怕需要服务端帮忙了额
你这个代码的问题,我分析,是因为每次页面刷新以后,你的定时器id都会被重新赋值为undefined
而你在页面加载时就会执行你自定义的定时器代码,代码内判断定时器id的条件语句永远不会成立,所以是不会清除定时器的
总的来说,http无状态造成的
如果一定要使用setinterval,你需要区分刷新页面后和刷新前的状态,这恐怕需要服务端帮忙了额
更多追问追答
追问
嗯,我现在把setInterval()换成了setTimeout(),但是貌似还是没达到要求,因为,我改了后点勾选框试了下效果,点一次过了7500ms页面刷新了一次,在点勾选框过了7500ms后为啥页面还会刷新呢,是不是还要改哪里?
追答
原因和我说的一样,因为你根本没有清除定时器
你的定时器是在页面加载后自动执行,而清除定时器的代码也是在页面加载后执行
每次刷新,页面重新加载
所以判断条件永远为假
展开全部
setTimeout("f_start_multi_monitor",7500);
超时调用 只运行一次
一般都会用它模拟循环调用
因为循环调用有些时候 对每次调用发生的时间间隔不可控
因为是单线程
但每次setTimeout的话就可以保证任务队列前面的代码都执行完
就变得可控了
更多追问追答
追问
嗯,我现在把setInterval()换成了setTimeout(),但是貌似还是没达到要求,因为,我改了后点勾选框试了下效果,点一次过了7500ms页面刷新了一次,在点勾选框过了7500ms后为啥页面还会刷新呢,是不是还要改哪里?
追答
一种可能是点勾选框触发的事件里 调用这个了刷新
另一种可能是刷新之后触发$(document).ready();里面写的f_start_multi_monitor()
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将你的setInterval()方法换成setTimeout(),setInterval()是循环刷新的,而setTimeout()是刷新一次,想要再次刷新需要调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询