|
|
|
| На странице имеется скрипт, который позволяет выбрать все чекбоксы, имеющиеся в каждой строке таблицы. Можно ли доработать скрипт или код таблицы таким образом, чтобы нечетные строки имели один фон, а четные - другой?
Причем, изменение фона должно касаться только тех строк, на которые распространяется действие javascript
<table id="table2">
<tr>
<td><p class="f1"><input type="checkbox" name="vse_grupp" onclick="change_grupp()"></p></td>
<td>Номер</td>
<td>Название</td>
</tr>
<script type="text/javascript">
function change_grupp()
{
for (i = 1; i <= 3; i++)
{
var elem = document.getElementById("grupp_" + i);
if(elem.checked === true)
elem.checked = false;
else
elem.checked = true;
}
}
</script>
<tr>
<td><p class="f1"><input type="checkbox" id="grupp_1" name="del_grupp[]" value="5"></p></td>
<td><p class="f1">1</p></td>
<td>Первая строка</td>
</tr>
<tr>
<td><p class="f1"><input type="checkbox" id="grupp_2" name="del_grupp[]" value="6"></p></td>
<td><p class="f1">2</p></td>
<td>Вторая строка</td>
</tr>
<tr>
<td><p class="f1"><input type="checkbox" id="grupp_3" name="del_grupp[]" value="7"></p></td>
<td><p class="f1">3</p></td>
<td>Третья строка</td>
</tr>
<tr>
<td> </td>
<td>4</td>
<td>В этой строке фон не нужен</td>
</tr>
</table>
|
| |
|
|
|
|
|
|
|
для: Владимир55
(05.12.2012 в 18:42)
| | Лучше исключать такие проверки как if(checked) else..., так как вам нужно отметить/разотметить. И не получать в итерациях объект, а получить их до цикла. Лучше так:
<table id="table2">
<tr>
<td><p class="f1"><input type="checkbox" name="vse_grupp" onclick="change_grupp(this.checked)"></p></td>
<td>Номер</td>
<td>Название</td>
</tr>
<script type="text/javascript">
function change_grupp(c)
{
var elem = document.getElementById("table2").getElementsByTagName('input');
for (i = 1; i <=3; i++) {
elem[i].checked = c;
elem[i].parentNode.parentNode.parentNode.style.background = i & 1 ? '#ccc' : '#fff';
}
}
</script>
<tr>
<td><p class="f1"><input type="checkbox" id="grupp_1" name="del_grupp[]" value="5"></p></td>
<td><p class="f1">1</p></td>
<td>Первая строка</td>
</tr>
<tr>
<td><p class="f1"><input type="checkbox" id="grupp_2" name="del_grupp[]" value="6"></p></td>
<td><p class="f1">2</p></td>
<td>Вторая строка</td>
</tr>
<tr>
<td><p class="f1"><input type="checkbox" id="grupp_3" name="del_grupp[]" value="7"></p></td>
<td><p class="f1">3</p></td>
<td>Третья строка</td>
</tr>
<tr>
<td> </td>
<td>4</td>
<td>В этой строке фон не нужен</td>
</tr>
</table>
|
PS. Может лучше "разукрасить" строки сразу, а не заниматься этим в сценарии?
И еще одно PS. Именно такая проверка if(elem.checked === true), не нужна еще и потому, как кроме булевого значения данный атрибут вам ничего и не вернет. И необязательно устанавливать чекбокс в состояние "выбрано" указывая значение true, можете указать и 1, и данному атрибуту будет установлено булево значение true. true = 1, false = 0, и вы можете производить с этими булевыми значениями такие же математические и логические операции как и с 1 и 0. Замените для эксперимента в функции строку elem[i].checked = c; на elem[i].checked ^= 1; И у вас будет инвертироваться выбор чекбосксов. Может где такое и пригодится. | |
|
|
|
|
 19.8 Кб |
|
|
для: confirm
(05.12.2012 в 19:18)
| | Спасибо!
PS. Может лучше "разукрасить" строки сразу, а не заниматься этим в сценарии?
В принципе, можно разукрасить и сразу, поскольку таблица формируется РНР-скриптом.
Замените для эксперимента в функции строку elem[i].checked = c; на elem[i].checked ^= 1; И у вас будет инвертироваться выбор чекбосксов. Может где такое и пригодится.
Спасибо, уже пригодилось!
Однако работает не совсем так, как ожидалось (смотрю через ФФ и Хром).
Сразу после вызова файла раскраска строк отсутствует (скриншот). | |
|
|
|
|
 19.8 Кб |
|
|
для: Владимир55
(05.12.2012 в 21:30)
| | После общего чекбокса раскрашивание появляется (скриншот). | |
|
|
|
|
 20.4 Кб |
|
|
для: Владимир55
(05.12.2012 в 21:32)
| | После снятия общего чекбокса раскрашивание остается (скриншот).
А хотелось бы, чтобы раскрашивание было всегда, независимо от чекбоксов (общего и частных).
Это возможно? | |
|
|
|
|
|
|
|
для: Владимир55
(05.12.2012 в 21:34)
| | Раскрашивайте строки таблицы сразу при ее выводе, зачем ее "красить" скриптом? Другое дело, если нужно отметить те строки таблицы, в которых выбран чекбокс, тогда да, оправдано. | |
|
|
|
|
|
|
|
для: Владимир55
(05.12.2012 в 21:30)
| | Ну так предложенная замена не занимается раскраской строк, это я написал, чтобы поняли, что установить/сбросить чекбокс можно и установкой 1/0 значения атрибута. Ну и к тому, что в данном случае в группе чекбоксов будет инвертироваться выбор - если чекбокс отмечен, то будет сброшен, если нет, значит будет установлен. Вот об этом я и говорил "может пригодится", если нужно будет инвертировать выбор. | |
|
|
|