すみません。コーディングについての質問かと思いましたが、これはアルゴリズムの問題でした。
つまりx,yの二次元空間だと捉え、市松模様はアルゴリズムによってどう表現できるかという課題ですね。
画像のコードはiやjが切り替わりますが、対象の変数が書き換わらないので常に同じ変数を参照し、同じ部分を書き換えてしまっています。
この問題はDOMの表現の理解が必要であるため、アルゴリズムの問題としては無駄なことを考えねばならず難易度が高い気がします。
このぐらいのテンプレートはあっていい気がします。
js
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Document</title>
7
8 <style>
9 table {
10 border-collapse: collapse; /* 罫線が重ならないように */
11 }
12
13 td, th {
14 border: 1px solid #333; /* セルに1pxの線を表示 */
15 padding: 8px; /* 中の文字に余白 */
16 text-align: center; /* 中央寄せ */
17 }
18
19 .bg-gray {
20 background-color: gray;
21 }
22 </style>
23</head>
24<body>
25
26 <h1>九九テーブル</h1>
27 <table id="multiplicationTable" ></table>
28
29 <script>
30 const table = document.getElementById("multiplicationTable");
31
32 for (let i = 1; i <= 9; i++) {
33 const row = document.createElement("tr");
34 for (let j = 1; j <= 9; j++) {
35 const cell = document.createElement("td");
36 cell.textContent = `${i} × ${j} = ${i * j}`;
37 row.appendChild(cell);
38 }
39 table.appendChild(row);
40 }
41
42 const rows = [...document.querySelectorAll('tr')]
43 // console.log(rows);
44
45 const cells = rows.map((value) => [...value.querySelectorAll('td')])
46 // console.log(cells);
47
48 console.table(cells)
49
50
51 </script>
52</body>
53</html>
学習用ならいいですが、document.writeも非推奨です。
また、学習用ならconfirmで行列の座標を受け取ってそこに色を付けるくらいの難易度からのほうがマシにも思えます。
で、forとかwhileとか、学習とか完全に無視した回答例はこちらです。
js
1const target = cells.map((row, rowIndex) => {
2 return row.filter((cell, cellIndex) => {
3 return ( ((rowIndex+cellIndex) % 2) == 0)
4 })
5})
6
7// console.log(target);
8
9target.flat().forEach(cell => {
10 cell.classList.add("bg-gray");
11})
課題だと思いますが、あえて市松模様だとか九九の表だとか表現しているのはAIを使用したコーディングでAIに適切に指示を与えられるのかを育んでいるのでしょうか。それとも具体的な言葉を用いることで、なじみやすくしているのでしょうか。
今、AIに聞いてみましたがちゃんと伝わるみたいですね。
よくある定番の課題内容なんでしょうかね。