- ベストアンサー
セルをまたぐチェックボックスのラベル
□文字 | 文字 | 文字 ※□はチェックボックス のように1行に複数セルがあるラベルの設定方法がわからず困っています。やりたいことは 1、1行の中のどのセルや文字をマウスオーバーしても1行ごと背景の色を変える 2、1行の中のどのセルや文字をクリックしてもチェックボックスにチェックが入る の2つです。 多少ならJQuery等もわかるのですがどのような実現方法がありますでしょうか。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
やりたいことに関して、ラベルは必須ではないでしょう。 TH,TDなどのテーブルセルにおいて、セルをまたぐチェックボックスのラベルは使えません。 作表において、DIV,SPAN等のグリッドセルなら、セルをまたぐチェックボックスのラベルが使えます。 やりたいことに限っていえば、セルをまたぐチェックボックスのラベルは 考えなくても実現できます。 そのサンプルソースをお確かめください。 <form name="form4"> <table id="table4" border="1"> <thead> <tr> <th></th><th>A列目</th><th>B列目</th><th>C列目</th> </tr> </thead> <tbody> <tr> <td><label><input type="checkbox" name="ccbx">1行目</label></td> <td>文字1A</td><td>文字1B</td><td>文字1C</td> </tr> <tr> <td><label><input type="checkbox" name="ccbx">2行目</label></td> <td>文字2A</td><td>文字2B</td><td>文字2C</td> </tr> <tr> <td><label><input type="checkbox" name="ccbx">3行目</label></td> <td>文字3A</td><td>文字3B</td><td>文字3C</td> </tr> </tbody> </table> <p> <input type="reset" value="RESET"> </p> </form> <script> // エレメント const checkbox = document.form4.ccbx; const tbody = document.querySelector("#table4 tbody"); const trs = tbody.querySelectorAll("tr"); // ホバー時 trs.forEach(function(element, index){ element.onmouseover = function(){ this.style.backgroundColor = "#ff0"; }; element.onmouseout = function(){ this.style.backgroundColor = ""; }; }); // クリック時 tbody.onclick = ()=> { let target = event.target; let n = target.parentNode.rowIndex - 1; if (target.tagName === "TD") { checkbox[n].checked = checkbox[n].checked ? false: true; } }; </script>
その他の回答 (1)
- luka3
- ベストアンサー率72% (424/583)
1についてはこちらを参考にしてください。 ・マウスオーバー時にTABLEの行の背景色を変えるCSSの書き方 https://dev-lib.com/table-mouseover-background-color-css/ 2は、LABELタグのfor属性でチェックボックスのIDを指定することで実現できます。 ・labelタグの使い方 https://catnose.me/learning/html/label