Залить бэкграунд строки при установленном чекбоксе
Здравствуйте
В каждой строке динамической таблицы есть чекбокс, нужно при установленном флажке чекбокса(-ов), заливать цветом бэкграунд строки (в которой находится чекбокс). И при снятии флажка чекбокса(-ов) менять бэкграунд на backgroundColor='' На данный момент заливка/удаление цвета бэкграунда строк происходит рандомно Буду благодарен за помощь function xxx(){ t = document.getElementById('iItemTbl'); //таблица var index = 0; for (var i = 0; i < t.rows.length; i++){ id = "r"+i+"c0"; //id чекбокса if (document.getElementById(id).checked){ index++; stroka = i; //номер строки таблицы t.rows[stroka].style.backgroundColor = 'green'; }else{ t.rows[stroka].style.backgroundColor = ''; } } } |
добавил переменную stroka = i; после else и функция стала нормально выполняться
|
sashgera,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #iItemTbl tr.active td { background-color: #008000; } </style> <script> document.addEventListener('DOMContentLoaded', () => { let table = document.getElementById('iItemTbl'); table.addEventListener('change', ({ target }) => { if (target = target.closest('input[id*=c0]')) { let tr = target.closest('tr'); tr.classList.toggle('active', target.checked) } }) }) </script> </head> <body> <table id="iItemTbl"> <thead> <tr> <th>Title 1</th> <th>Title 2</th> <th>Title 3</th> </tr> </thead> <tbody> <tr> <td>Cell 1.1</td> <td>Cell 1.2</td> <td><input id="r0c0" type="checkbox"></td> </tr> <tr> <td>Cell 2.1</td> <td>Cell 2.2</td> <td><input id="r1c0" type="checkbox"></td> </tr> </tbody> </table> </body> </html> |
рони, спасибо!
|
Цитата:
<style type="text/css"> #iItemTbl tr:has(:checked) { background-color: #008000; } </style> <table id="iItemTbl"> <thead> <tr> <th>Title 1</th> <th>Title 2</th> <th>Title 3</th> </tr> </thead> <tbody> <tr> <td>Cell 1.1</td> <td>Cell 1.2</td> <td><input id="r0c0" type="checkbox"></td> </tr> <tr> <td>Cell 2.1</td> <td>Cell 2.2</td> <td><input id="r1c0" type="checkbox"></td> </tr> </tbody> </table> |
Цитата:
|
Можно без has:
<style type="text/css"> #iItemTbl tr { position: relative; } #iItemTbl tr :checked + .background { background-color: #008000; position: absolute; inset: 0; z-index: -1; } </style> <table id="iItemTbl"> <thead> <tr> <th>Title 1</th> <th>Title 2</th> <th>Title 3</th> </tr> </thead> <tbody> <tr> <td>Cell 1.1</td> <td>Cell 1.2</td> <td> <input id="r0c0" type="checkbox"> <div class="background"></div> </td> </tr> <tr> <td>Cell 2.1</td> <td>Cell 2.2</td> <td> <input id="r1c0" type="checkbox"> <div class="background"></div> </td> </tr> </tbody> </table> |
Часовой пояс GMT +3, время: 19:00. |