我想清除每15秒運行的時間間隔。爲什麼setInterval函數不能停止?
這裏是Ajax請求:
function extras()
{
$x = {
action:'extras'
};
var r;
$.ajax({
type:'POST',
url:'services.php',
data:$x,
beforeSend:function() {
$('input[name="stop_"]').trigger("click");
},
success:function(response) {
r = response;
//console.log(response)
},
complete:function() {
console.log(r);
$('input[name="re_start"]').trigger("click");
}
});
}
所以,在我的按鈕re_start
和stop_
我有:
$('input[name="re_start"]').click(function (event) {
event.preventDefault();
clearInterval(check);
var check = setInterval(function() {
extras();
},15000);
console.log('Starting again...');
});
$('input[name="stop_"]').click(function (event) {
event.preventDefault();
clearInterval(check);
console.log('Stop');
});
在我的jQuery的DOM我初始化功能extras()
並保持在一個名爲「檢查」的變量,其中我初始化時間間隔如下:
<input type="button" style="display:none;" name="re_start">
<input type="button" style="display:none;" name="stop_">
<script type="text/javascript">
(function() {
extras();
var check = setInterval(function() {
extras();
},15000);
})();
function extras()
{
$x = {
action:'extras'
};
var r;
$.ajax({
type:'POST',
url:'services.php',
data:$x,
beforeSend:function() {
$('input[name="stop_"]').trigger("click");
},
success:function(response) {
r = response;
//console.log(response)
},
complete:function() {
console.log(r);
//message_smart(r);
$('input[name="re_start"]').trigger("click");
}
});
}
</script>
然後我無法理解前30秒是如何工作的,當他們通過60秒時,似乎開始一次做兩次,然後三次,等等!看來,如果我每隔一段時間更改一次,運行速度會更快,速度更快。問題是什麼?
'check'不在第二點擊處理程序的範圍內... – Li357
感謝您的回答。你怎麼知道?我的意思是,當AJAX在完整的函數完成並且beforeSend我停止最後一個setInterval時,我重新啓動我的setInterval。 –