Несколько интервалов на странице, Как очистить интервал только для определенного элемента - PullRequest
0 голосов
/ 03 октября 2018

Мне было трудно понять, как использовать несколько интервалов на странице.Обычно это не проблема, но я работаю над созданием сценария динамического отсчета, который использует данные, предоставленные пользователем, и должен соблюдать несколько правил:

  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. Если идентификатор элемента совпадает и для этого элемента установлен интервал, очистить предыдущий интервал

  2. Если идентификатор элемента равениначе просто начните новый интервал

PS с программным обеспечением, которое я использую, я могу получить доступ к идентификатору элемента, используя data.elementId.например: if (data.elementId == data.elementId) {делать вещи}

1 Ответ

0 голосов
/ 30 января 2019

Я нашел ответ на эту загадку.

Вам нужно создать динамическую переменную.Для этого вам нужно либо использовать eval (), либо присвоить переменную области видимости окна.Затем назначьте интервал этой переменной.

К счастью, программное обеспечение, с которым я работаю, присваивает уникальный идентификатор каждому элементу, добавленному на страницу.Так что я могу использовать этот уникальный идентификатор, чтобы присвоить его переменной для создания динамического 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 ); 

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...