JavaScriptでのアクティベーションスタイルの交互変更

前のレッスンでは、クリックによってセルをアクティブにする方法を学びました。 では今度は、色が交互に変わるようにしてみましょう。 最初のセルは赤色、2番目のセルは緑色、3番目は再び赤色、というように交互に変更します。

この問題を解決するには、2つのCSSクラスが必要になります。

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

説明した交互変更を実装しましょう。

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

私のコードを分析し、その後でこの問題の解決方法を自分で繰り返してください。

配列からの複数色の交互変更

今度は2色ではなく、任意の数の色を交互に変更したいとします。 そのために、CSSクラスの配列を保存しましょう。

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

クラスの色を定義しましょう。

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

では、交互変更を実装しましょう。

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

私が示したコードがどのように動作するか説明してください。