我遇到setInterval
功能问题。我有一个动态加载内容的HTML页面。内容通过AJAX Post Request
加载到PHP脚本,该脚本包含正在加载到HTML div
中的目标HTML内容。当动态加载内容时,也会加载并执行Javascript脚本。 script
调用setInterval
函数并永久执行。当我动态加载新内容时出现问题,我希望setInterval
函数停止,因为setInterval
影响的内容被删除了,但是它继续执行,并且由于元素不存在而抛出错误。很明显,因为函数被加载到内存中并且页面没有被重新加载,因此内存不会被刷新。
我需要在加载新内容时清除间隔(如果我重新加载新内容也会发生这种情况:旧的setInterval
仍然执行,而新的也会执行)。
这是动态加载脚本的一个简单示例:
//Autoload Array for each Grid
var GRID_autoLoad = new Array();
function Grid_autoLoad(grid_id){
//This doesn't work! A new instance of the variable is created everytime
if(GRID_autoLoad[grid_id] !== undefined ) {
clearInterval(GRID_autoLoad[grid_id]);
}
GRID_autoLoad[grid_id] = setInterval(function(){
Grid_load(grid_id);
}, 5000);
}
function Grid_init(grid_id){
Grid_load(grid_id);
Grid_autoLoad(grid_id);
}
我无法检查变量是否已定义并清除前一个间隔,因为在重新加载内容时会创建一个新的变量实例!如何取消setInterval
功能?