我正在運行一個函數來檢查數據庫條目是否存在。clearInterval在一種情況下失敗,但在另一種情況下失敗
在我的網頁加載我檢查元素是否存在,如果是這樣我用setInterval
運行功能。像這樣:
if ($('#encoding').length) {
console.log("auto_update start");
var update = setInterval(auto_update, 12000);
}
然後在我auto_update
功能發生這種情況
function auto_update() {
console.log("auto_update running");
$.ajax({
type: 'POST',
url: ajaxurl,
data: {
action: "dhf_ajax_router",
perform: "dhf_check_status", // the function we want to call
post_id: $('#post_id').val(),
nonce: $('#dhf-video-meta-nonce').val()
},
success: function(response) {
if (response === "continue") {
console.log("still encoding");
} else {
clearInterval(update);
console.log("complete " + response);
}
}
});
}
的問題是,如果$('#encoding')
不存在在開始頁面上,並通過用戶手動內觸發:
$(document).on("click", ".run_encode", function(){
// doing the necessary stuff here.
if (response === "sent") {
// more stuff
var update = setInterval(auto_update, 12000);
}
}); // end .run_encode
然後clearInterval(update)
不起作用,它結束了一個無限循環。
我想不出爲什麼。在兩種情況下都設置了名稱爲update
的間隔,那麼爲什麼在第二種情況下清除它不起作用?
關鍵詞:「JavaScript的變量範圍」 – 2012-08-10 07:23:13