Alternância de Estilos de Ativação em JavaScript

Na lição anterior, aprendemos a ativar células clicando nelas. Agora vamos fazer com que as cores alternem: deixe a primeira célula pintar de vermelho, a segunda - em verde, a terceira - novamente em vermelho e assim por diante.

Para resolver esta tarefa, precisaremos de duas classes CSS:

css.color1 {
  background: red;
}
.color2 {
  background: green;
}

Vamos implementar a alternância descrita:

javascriptlet tds = document.querySelectorAll('#table td');

let color = 'color1';
for (let td of tds) {
  td.addEventListener('click', function() {
    if (color == 'color1') {
      color = 'color2'
    } else {
      color = 'color1'
    }
    
    this.classList.add(color);
  });
}
Задание 1

Analise meu código e, em seguida, repita a solução para este problema por conta própria.

Alternância de Muitas Cores de um Array

Agora, suponha que queremos alternar não duas cores, mas uma quantidade arbitrária. Vamos armazenar um array de classes CSS para isso:

javascriptlet colors = ['color1', 'color2', 'color3'];

Vamos definir as cores das nossas classes:

css.color1 {
  background: red;
}
.color2 {
  background: green;
}
.color3 {
  background: yellow;
}

E agora vamos implementar a alternância:

javascriptlet tds = document.querySelectorAll('#table td');

let i = 0;
let colors = ['color1', 'color2', 'color3'];

for (let td of tds) {
  td.addEventListener('click', function() {
    this.classList.add(colors[i]);
    
    i++;
    if (i == colors.length) {
      i = 0;
    }
  });
}
Задание 2

Explique como funciona o código que eu forneci.