したがって、HTMLの<table>
要素を使用して5x5グリッドを作成しました。クリックされたときに各セルが赤くなり、そうでないときには白に戻るようにします。各セルの最初のクリックを検出しないようです。最初のクリックがトリガーされると、通常は1回のクリックで赤と白の表示が交互に切り替わりますが、最初のクリックをクリックすると応答しません。セルが2度クリックされた後の最初のクリックで応答するのはなぜですか?それまで触れていない場合は、最初のクリックで反応しません。HTMLテーブルの最初のクリックでonclick()が機能しない
HTMLスニペット:
<div class="board">
<table type="board">
<tr>
<td id="r1-c1" onclick="changeColor('r1-c1')"></td>
<td id="r1-c2" onclick="changeColor('r1-c2')"></td>
<td id="r1-c3" onclick="changeColor('r1-c3')"></td>
<td id="r1-c4" onclick="changeColor('r1-c4')"></td>
<td id="r1-c5" onclick="changeColor('r1-c5')"></td>
</tr>
...
</table>
</div>
<button id="submit" onclick="submitted()">Generate</button>
スニペットはそれぞれ、本体と2 divタグ内にネストされます。
CSSスニペット:
table[type=board],tr,td{
background-color: white;
min-width: 80px;
min-height: 380px;
border: 2px solid black;
text-align: center;
font-size: 25px;
margin: 0px;
}
JSコード:
function changeColor(id)
{
if(document.getElementById(id).style.backgroundColor == "white"){
document.getElementById(id).style.backgroundColor = "red";
}else{
document.getElementById(id).style.backgroundColor = "white";
}
}
をクリックされたセルを見つけるためにあなたを助ける意味と言うことはあなたを助けることはできません。 –
私は初めてdocument.getElementById(id).style.backgroundColor == "white" 'が' document.getElementById(id).style.backgroundColor ===として定義されていないので、element.style.backgroundColorが設定されていないと思います。 '、それはelseに入り、背景を「白」に設定します。 ifが未定義であることをチェックし、それを赤に設定するか、条件を切り替える(if(red)white; else red;)ことでこれを回避することができます。 –
初期ロードでcssを適用するかどうか確認してください。そうでない場合は、未定義のプロパティもチェックしています。 – SESN