页面上有多个间隔,如何仅清除特定元素上的间隔

时间:2018-10-03 19:55:22

标签: element intervals

我一直很难弄清楚如何在页面上使用多个间隔。通常,这不会有问题,但是我正在努力创建一个动态倒计时脚本,该脚本使用用户提交的数据并必须遵守一些规则:

  1. 我只需要为特定元素清除间隔即可。
  2. 我只需要清除该特定元素中当前设置的间隔即可。

我的想法是计算每个间隔,并将数字实例分配给每个间隔。像这样:

function(element, data, api) {

let intervalIds = [];

for (var i=0; i < intervalIds.length; i++){
}

intervalIds.push(setInterval(function(){

console.log(intervalIds[i]);

clearInterval(intervalIds[i]-1);

//timecalculations after

}, 1000 )); 
}

这首先起作用,但是当我以多个间隔刷新页面时,但是刷新页面后只有一个间隔。

  1. 如果元素ID相同且为此元素设置了间隔,则清除先前的间隔

  2. 如果元素ID不同,则只需开始一个新的间隔

使用我正在使用的软件的

P.S,我可以使用data.elementId访问元素ID。例如:if(data.elementId == data.elementId){做事}

1 个答案:

答案 0 :(得分:0)

我找到了这个谜题的答案。

您将需要创建一个动态变量。为此,您可能需要使用eval()或将变量分配给窗口范围。然后将时间间隔分配给该变量。

幸运的是,我使用的软件为添加到页面的每个元素分配了唯一的ID。因此,我可以使用此唯一ID将其分配给变量以创建动态va

例如:

//unique id
var dynamicIntervalID  = $(element).attr('id');
//clear interval if one exists
if (window["intervalIds"+dynamicIntervalID])clearInterval(window["intervalIds"+dynamicIntervalID]) 

//assign unique element id to interval 
window["intervalIds"+dynamicIntervalID] = setInterval(function(){
 ...code here..
 }, 1000 ); 

希望这会有所帮助。