页面上的多个间隔,如何仅清除特定元素上的间隔
Multiple Intervals on Page, How to clear interval only on specific element
我一直无法弄清楚如何在一个页面上使用多个间隔。通常,这不是问题,但我正在努力创建一个动态倒计时脚本,该脚本使用用户提交的数据并且必须遵守一些规则:
- 我只需要间隔专门为给定元素清除。
- 我只需要间隔来清除当前是否在该特定元素中设置了间隔。
我的想法是计算每个间隔并为每个间隔分配数字实例。所以像这样:
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 ));
}
这在一开始是有效的,但是当我以多个间隔刷新页面时,但是在我刷新页面后只有一个间隔。
如果元素ID相同,并且为该元素设置了区间,则清空之前的区间
如果元素 ID 不同,只需简单地开始一个新的间隔
P.S 使用我正在使用的软件,我可以使用 data.elementId 访问元素 ID。例如:if (data.elementId == data.elementId) { 做事 }
我找到了这个谜语的答案。
您需要创建一个动态变量。为此,您需要使用 eval() 或将变量分配给 window 范围。然后将间隔分配给该变量。
幸运的是,我使用的软件会为添加到页面的每个元素分配一个唯一的 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 );
希望这对您有所帮助。
我一直无法弄清楚如何在一个页面上使用多个间隔。通常,这不是问题,但我正在努力创建一个动态倒计时脚本,该脚本使用用户提交的数据并且必须遵守一些规则:
- 我只需要间隔专门为给定元素清除。
- 我只需要间隔来清除当前是否在该特定元素中设置了间隔。
我的想法是计算每个间隔并为每个间隔分配数字实例。所以像这样:
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 ));
}
这在一开始是有效的,但是当我以多个间隔刷新页面时,但是在我刷新页面后只有一个间隔。
如果元素ID相同,并且为该元素设置了区间,则清空之前的区间
如果元素 ID 不同,只需简单地开始一个新的间隔
P.S 使用我正在使用的软件,我可以使用 data.elementId 访问元素 ID。例如:if (data.elementId == data.elementId) { 做事 }
我找到了这个谜语的答案。
您需要创建一个动态变量。为此,您需要使用 eval() 或将变量分配给 window 范围。然后将间隔分配给该变量。
幸运的是,我使用的软件会为添加到页面的每个元素分配一个唯一的 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 );
希望这对您有所帮助。