[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обход элементов формы в цикле
Гость_Serg
Добрый вечер!
Такой вопрос: на форме есть таблица, в каждой строке которой есть чекбокс. При выборе того или иного чекбокса необходимо чтобы выделялась вся строка каким-то цветом (красным например), при снятии чекбокса, чтобы цвет вернулся в исходный.
Такая штука на mail.ru есть, у кого там ящики, т.е выбирая там на удаление письма, отмечая их чекбоксом, видно как вся строка подсвечивается.

Вот на простом примере я сделал типа такого:


<form name='frm_user'>
<table
width=50% id="tab" cellpadding="2" cellspacing="2" border="1">
<tr
id="tr_1">
<td
width="20px"> <input type='checkbox' id='ch_1' onChange='f1()'></td>
</tr>
<tr
id="tr_2">
<td
width="20px"> <input type='checkbox' id='ch_2' onChange='f1()'></td>
</tr>
<tr
id="tr_3">
<td
width="20px"> <input type='checkbox' id='ch_3' onChange='f1()'></td>
</tr>
<tr
id="tr_4">
<td
width="20px"> <input type='checkbox' id='ch_4' onChange='f1()'></td>
</tr>
<tr
id="tr_1">
<td
width="20px"> <input type='checkbox' id='ch_5' onChange='f1()'></td>
</tr>
</table>
</form>



function f1()
{
if(document.getElementById('ch_1').checked)
{
document.getElementById('tr_1').style.backgroundColor='red';
}
else
document.getElementById('tr_1').style.backgroundColor='';



if(document.getElementById('ch_2').checked)
{
document.getElementById('tr_2').style.backgroundColor='red';
}
else
document.getElementById('tr_2').style.backgroundColor='';



if(document.getElementById('ch_3').checked)
{
document.getElementById('tr_3').style.backgroundColor='red';
}
else
document.getElementById('tr_3').style.backgroundColor='';



if(document.getElementById('ch_4').checked)
{
document.getElementById('tr_4').style.backgroundColor='red';
}
else
document.getElementById('tr_4').style.backgroundColor='';



if(document.getElementById('ch_5').checked)
{
document.getElementById('tr_5').style.backgroundColor='red';
}
else
document.getElementById('tr_5').style.backgroundColor='';
}


Вопрос: чтобы по сто раз одно и тоже не писать, как это сделать в цикле?
Что-то я запутался там с document.frm_user.elements.length и прочим...



Спустя 13 минут, 25 секунд (24.02.2011 - 23:58) KonstantinK написал(а):
Ну вот как то так в сокращенном виде там сам уже допиши
var elem = document.getElementsByName('frm_user')
var elem_input = elem.getElementsByTagName('INPUT')
for(var i = 0; i < elem_input.length; i++ )
{
if(elem_input[i].checked)
...

else
...
}

Спустя 10 минут, 40 секунд (25.02.2011 - 00:08) Гость_Serg написал(а):
KonstantinK, благодарю!
Но тут сразу вопрос: а как там выбрать чтобы цвет менялся для строки (т.е тег <tr>)?

Я вот аналогично пытался написать (забыл выложить)


for (var i = 0; i<document.frm_user.elements.length; i++)
{
if(document.frm_user.elements[i].checked)
{
document.frm_user.elements[i].style.backgroundColor='red';
}
else
document.frm_user.elements[i].style.backgroundColor='';
}


Но тогда он мне естесно не всю строку делает красной, а только сам чекбокс выбранный...
Вот, подскажи пожалуйста, как сделать чтоыб всю строку окрашивал.

Спустя 2 минуты, 18 секунд (25.02.2011 - 00:11) Guest написал(а):
Т.е вот как раз в твоём коде, где ты (...) поставил, у меня вся и загвоздка:)

Спустя 20 минут, 54 секунды (25.02.2011 - 00:31) uWeb написал(а):

Спустя 4 минуты, 52 секунды (25.02.2011 - 00:36) Гость_Serg написал(а):
uWeb
ОГРОМНЕЙШЕЕ тебе спасибо!! smile.gif

Спустя 4 минуты, 49 секунд (25.02.2011 - 00:41) Guest написал(а):
Вот только почему-то в IE 6 (не знаю как в 7 и 8), как-то с "тормозами" работает оно...

Спустя 6 минут, 42 секунды (25.02.2011 - 00:48) uWeb написал(а):
Не пора ли забыть о таких браузерах?

Спустя 9 минут, 11 секунд (25.02.2011 - 00:57) Гость_Serg написал(а):
Возможно smile.gif
Но по привычке во всех тестирую ph34r.gif

Спустя 3 минуты, 5 секунд (25.02.2011 - 01:00) uWeb написал(а):
Ну работает же?

Спустя 18 часов, 8 минут, 40 секунд (25.02.2011 - 19:09) Гость_Serg написал(а):
Работать-то работает но так: я выбираю чекбокс, потом выбираю второй чекбокс.....вот когда выбираю второй, тогда первый окрашивается....потом выбираю 3-й: окрашивается 2-й....
Т.е какое-то запоздание происходит)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.