【问题标题】:How do you stop setInterval from creating multiple instances on .load()'s? [duplicate]如何阻止 setInterval 在 .load() 上创建多个实例? [复制]
【发布时间】:2019-10-20 06:05:31
【问题描述】:

当用户单击我网站上的导航按钮时,他们调用.load(),即$("#main_window").load("file.php"); 如果 file.php 包含 JavaScript 以及 setInterval 计时器,那么如果用户多次单击导航按钮,他们会'将创建多个setIntervals。如何停止这种情况并且始终只有一个计时器?

获取计时器的 ID 没有帮助,因为.load 会重置全局变量。因此,我无法阻止重复 .load() 上的多个计时器。

var myVar;

console.log(myVar);  // will be undefined when .load() calls this file again.

myVar = setInterval(reload, 5000);

console.log(myVar); // A new ID will be created on each .load(), but all old instances will continue to fire

function reload() {
  $(tableName).DataTable().ajax.reload(null, false);
  console.log("reloaded"); 
}

Console.log 输出:带有两个.loads()

未定义

27

未定义

34

【问题讨论】:

  • 我不想停止所有超时,因为我的网站上有其他用于其他目的的超时。

标签: javascript php jquery


【解决方案1】:
if(myVar){
  clearInterval(myVar)
}
var myVar;

console.log(myVar);  // will be undefined when .load() calls this file again.

myVar = setInterval(reload, 5000);

console.log(myVar); // A new ID will be created on each .load(), but all old instances will continue to fire

function reload() {
  $(tableName).DataTable().ajax.reload(null, false);
  console.log("reloaded"); 
}

【讨论】:

  • 很遗憾这不起作用。
猜你喜欢
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 2017-06-15
  • 2023-03-16
相关资源
最近更新 更多