0

Не могу понять. как в js сделать интервал выполнения для нескольких объектов.

Например, есть такой массив

var data = {
    data1:{
        increment:1,
        innerTo:"#elem"
    },
    data2:{
        increment:20,
      innerTo:"#elem2"
    },
    dataN:{
        increment:400,
      innerTo:"#elemN"
    }
};

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

например для data1 каждую секунду увеличивать значение на 1 и вставлять в элемент. Для второго увеличивать каждую секунду на 2 и вставлять в другой элемент. И такой список может изменяться.

Grundy
  • 81,538

1 Answers1

5

Вот так через setInterval:

data = [ 
        { increment:1, timer: 1000, innerTo :"elem1" },
        { increment:1, timer: 2000, innerTo:"elem2" },
        { increment:1, timer: 3000, innerTo:"elem3" }
]

for(let el of data) { setInterval( () => { document.getElementById(el.innerTo).innerHTML = el.increment++; }, el.timer); }

<div id='elem1'>1</div>
<div id='elem2'>1</div>
<div id='elem3'>1</div>
Zicrael
  • 1,506
  • Дело в том, что до такого я тоже дошел. Но ваш код ровно как и мой почему то вставляет данные в последний элемент. А надо в каждый. проверьте и убедитесь. что данные идут только в последний. – Анатолий May 10 '18 at 10:39
  • Странно но у меня все записывает ,и данные идут во все сразу, как нужно. – Zicrael May 10 '18 at 11:31