gpt4 book ai didi

javascript - javascript 中的计时器有时不想停止计数

转载 作者:行者123 更新时间:2023-11-28 07:18:33 25 4
gpt4 key购买 nike

我在 javascript 中有 3 个计时器,我创建了按钮来控制它们的流程(切换它们)。然而(仅!)有时他们不想停下来。问题可能出在哪里?计时器太多?我正在 Google Chrome 上测试它。

所以,我的代码中最重要的部分:

//to insert infos
function addInfo(info){
$("#info").text(info);
clearTimeout(window.myTimer);
window.myTimer = setTimeout(function() {
$("#info").text("");
}, 5000);

return true;
}

function startHTML(){
window.TimerHTML = setInterval(function(){
//ajax
}, 500);
}

function startView(){
window.TimerView = setInterval(function(){
//ajax
}, 2000);
}

function stop_html(){
clearInterval(TimerHTML);
startView();
addInfo("html->view ");
}

function start_html(){
clearInterval(TimerView);
startHTML();
addInfo("view->html");
}

$(function() {
startView();
start_html();

//these actions should switch timers
$("#stop_html").click(function(){
stop_html();
return false;
});

$("#start_html").click(function(){
start_html();
return false;
});
});

编辑:添加了 html

		<button class="btn btn-primary btn-allwidth" id="start_html" data-toggle="tooltip" data-placement="right" title="View->Html">HTML ON</button> 
<button class="btn btn-primary btn-allwidth" id="stop_html" data-toggle="tooltip" data-placement="right" title="HTML->View">HTML OFF</button>

<a href="#" onclick="javascript:$('#info-container').toggle('slow'); return false;" class="btn btn-primary btn-allwidth" data-toggle="tooltip" data-placement="right" title="Infos">Infos<i class="glyphicon glyphicon-chevron-down"></i></a>

<div id="info-container">
<div id="info" class="alert alert-success"></div>
</div>

最佳答案

如果连续执行startHTML或startView(即startHTML连续执行两次),那么您最终会创建两个间隔。

当你执行

window.TimerHTML = setInterval(function(){
//ajax
}, 500);

连续两次,window.TimerHTML 获得分配给它的新间隔。但这并不意味着在此之前分配给 window.TimerHTML 的上一个间隔已被清除。它仍然继续,但不再分配要访问的变量。

依次运行这两个命令即可测试

window.TimerHTML = setInterval(function(){
console.log("A");
}, 500);
window.TimerHTML = setInterval(function(){
console.log("B");
}, 500);

即使您清除 window.TimerHTML,您仍然会看到“A”被记录在控制台中。那是因为之前的计时器从未被清除。并且 TimerHTML 无法再访问它。

这可能是您的计时器无法停止的原因。

关于javascript - javascript 中的计时器有时不想停止计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30561637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com