一番左の列にチェックボックスを含むHTMLテーブルを作成しようとしています。私は<tr>
要素のどこかをクリックしてチェックボックスを選択できるようにしたいと思います。私はそれを働かせたが、私はチェックボックス自体をクリックすると状態は変わらない。私はFirefox 54でこれをテストしました(他のブラウザは気にしません)。イベントバブリングの問題とJavaScriptチェックボックス
if(e.target !== checkbox) {
let table = document.querySelector("table");
table.addEventListener("click", function(e) {
let tr = e.target.closest("tr");
let checkbox = tr.firstElementChild.firstElementChild;
if (e.target !== checkbox) {
checkbox.checked = !checkbox.checked
}
});
<table>
<tr>
<td><input type="checkbox"></td>
<td>Click works here too</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>Click works here too</td>
</tr>
</table>
<p>I can click the text/table row, but clicking the checkbox no longer works</p>
私はあなたがクリックチェックボックスをターゲットにされていないことを確認するために条件を設定する必要がJSFiddleは私の問題https://jsfiddle.net/a92to0tu/
let table = document.querySelector("table");
table.addEventListener("click", function(e) {
e.preventDefault();
let tr = e.target.closest("tr");
let checkbox = tr.firstElementChild.firstElementChild;
// This doesn't work
checkbox.checked = !checkbox.checked
// This works but I don't like it
// setTimeout(function() {
// checkbox.checked = !checkbox.checked
// }, 100);
});
<table>
<tr>
<td><input type="checkbox"></td>
<td>Click works here too</td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td>Click works here too</td>
</tr>
</table>
<p>I can click the text/table row, but clicking the checkbox no longer works</p>
クリックした要素がチェックボックスであるかどうかを確認 - [更新フィドル](https://jsfiddle.net/a92to0tu/1/) –
を参照してください別の場所にコードを投稿しないでください。 – RobG
修正点は 'if(e.target!==チェックボックス) チェックボックスです。 .checked =!checkbox.checked'あなたのフィドルで。 'e.preventDefault()'は不要です。 –