Javascript - 删除声明时setInterval仍在执行

时间:2016-05-16 15:20:14

标签: javascript variables global setinterval

我遇到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功能?

0 个答案:

没有答案