Как я могу изменить свой код для одновременного запуска SetTimeout? - PullRequest
0 голосов
/ 17 января 2019

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

функция мигает () { if (! toggleSwitch) {

    for (let i = 0; i < elements.length; i++) {
        shapes.push(elements[i].className);

    }
    // Start off at the first element.
    let i = 0;
    let len = shapes.length;

    // Do the next link
    function doNext() {

        let element = shapes[i];
        i++;

        eval(element).fillColor = eval(element).setColor;
        document.getElementById(element).style.backgroundColor = (eval(element).fillColor===document.getElementById(element).style.backgroundColor) ? 'white' : eval(element).setColor ;

        if (i < len) {
            // Don't do anything special
        }  else {
            // Reset the counter
            i = 0;
        }
        myVar = setTimeout(doNext, 1000);      }

    // And the code needs kicked off somewhere
    doNext();
}

} Также я не могу переключать классы, потому что с помощью перетаскивания я могу изменить цвет фона в любое время во время выполнения, поэтому у меня есть объект для каждой фигуры, где я сохраняю, какой цвет является фоном. -

1 Ответ

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

Я думаю, что вы ищете setInterval. Ниже приведен основной пример мигания функции.

let red = true;
let squares = document.querySelectorAll('.square');
  
setInterval(() => {
  red = !red;
  for (let i = 0; i < squares.length; i++) {
    if (red) squares[i].className = 'square red';
      else squares[i].className = 'square';
  }
}, 2000);
.square {
  height: 50px;
  width:50px;
  margin:10px;
  background-color: #FFF;
}

.red {
  background-color: #F00;
}
<div class="square red"></div>
<div class="square red"></div>
<div class="square red"></div>
<div class="square red"></div>
...