Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.10.2023, 01:28
Кандидат Javascript-наук
Отправить личное сообщение для sashgera Посмотреть профиль Найти все сообщения от sashgera
 
Регистрация: 20.09.2011
Сообщений: 140

Залить бэкграунд строки при установленном чекбоксе
Здравствуйте

В каждой строке динамической таблицы есть чекбокс, нужно при установленном флажке чекбокса(-ов), заливать цветом бэкграунд строки (в которой находится чекбокс). И при снятии флажка чекбокса(-ов) менять бэкграунд на 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  = '';
		}
	}
}

Последний раз редактировалось sashgera, 10.10.2023 в 01:30.
Ответить с цитированием
  #2 (permalink)  
Старый 10.10.2023, 02:11
Кандидат Javascript-наук
Отправить личное сообщение для sashgera Посмотреть профиль Найти все сообщения от sashgera
 
Регистрация: 20.09.2011
Сообщений: 140

добавил переменную stroka = i; после else и функция стала нормально выполняться
Ответить с цитированием
  #3 (permalink)  
Старый 10.10.2023, 02:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

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>
Ответить с цитированием
  #4 (permalink)  
Старый 10.10.2023, 03:13
Кандидат Javascript-наук
Отправить личное сообщение для sashgera Посмотреть профиль Найти все сообщения от sashgera
 
Регистрация: 20.09.2011
Сообщений: 140

рони, спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 10.10.2023, 08:52
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,218

Сообщение от sashgera
нужно при установленном флажке чекбокса(-ов), заливать цветом бэкграунд строки (в которой находится чекбокс)
Теперь можно такое на css реализовать...

<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>
Ответить с цитированием
  #6 (permalink)  
Старый 10.10.2023, 11:26
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,748

Сообщение от ksa
Теперь можно такое на css реализовать...
Ну если забыть про Firefox.
Ответить с цитированием
  #7 (permalink)  
Старый 12.10.2023, 19:06
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Можно без 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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение строки <select> при выборе checkbox DarkMaster13 Общие вопросы Javascript 4 14.04.2014 03:30
Сообщение при копировании строки адреса сайта ullltra Общие вопросы Javascript 2 19.11.2009 18:04
Изменить стиль формы - бэкграунд при onmouseover petyaeva Элементы интерфейса 0 31.07.2009 11:31
Включение <input type="radio"> при клике на а люьую область строки. Vel Общие вопросы Javascript 2 24.06.2009 21:39
Выделение строки <select> при выборе другого <select> simbion Элементы интерфейса 12 05.05.2009 03:43