我正在尝试创建一个按钮,将切换setInterval / clearInterval。 setInterval将正常运行,但是再次单击该按钮时,不会完成clearInterval。这是变量范围问题还是功能设置问题?
http://jsfiddle.net/BxLps/1/
$(function () {
var int;
var onrepeat;
$('button[id^=temp]').click(function () {
window.id = $(this).attr("value");
var int = setInterval(doAjax, 3000);
if (onrepeat == false) {
$(this).find('i').addClass("fa-spin");
doAjax();
int;
onrepeat = true;
} else {
clearInterval(int);
$(this).find('i').addClass("fa-spin");
onrepeat = false;
}
});
});
function doAjax() {
$.ajax({
type: "GET",
url: "ajax.php",
data: "a=cur-temp&id=" + id,
success: function (msg) {
$("#cur-temp").html(msg);
}
})
};
最佳答案
真正的问题是它每次都创建新的间隔。考虑一下,每次“单击”都在运行该代码(因此它正在执行setInterval)。
解决方案是在点击外部声明int一次(也只能声明一次)。然后在条件内移动setInterval
var int;
var onrepeat;
$('button[id^=temp]').click(function () {
window.id = $(this).attr("value");
if (onrepeat == false) {
$(this).find('i').addClass("fa-spin");
doAjax();
int = setInterval(doAjax, 3000);
onrepeat = true;
} else {
clearInterval(int);
$(this).find('i').addClass("fa-spin");
onrepeat = false;
}
});
关于javascript - clearInterval未设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20892769/