Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Изменение цвета фона ячейки таблицы при нажатии чекбокса (http://forum.oszone.net/showthread.php?t=117489)

dmitryst 17-09-2008 17:05 901788

Изменение цвета фона ячейки таблицы при нажатии чекбокса
 
Привожу кусок кода:
Код:

<td>
<form id="form1" name="form1" method="post" action="">
          <input type="checkbox" id="test-check" />
</form>
</td>

Нужно, чтобы при нажатии чекбокса менялся цвет фона ячейки - нажат чекбокс=фон зеленый, не нажат чекбокс=фон красный. Честно говоря, совсем запутался со стилями и javascript-ами.. Кое-как удалось это реализовать, но работает только в эксплорере. Я так подозреваю, надо использовать что-то вида document.table.cell_ID.background-color="color", подскажите, как это сделать правильно (или хоть как-нибудь, чтобы было кроссбраузерным решением)

Arrest 17-09-2008 18:45 901870

document.getElementById("test-check").parentNode.parentNode.style.backgroundColor="новый цвет"

Coutty 17-09-2008 19:17 901887

Чуть дополню:
HTML код:

<table><tr>
<td id="chbxStatus" style="background-color:red">
<form id="form1" name="form1" method="post" action="">
          <input type="checkbox" id="test-check" onclick="document.getElementById('chbxStatus').style.backgroundColor = this.checked ? 'green' : 'red'"/>dsf
</form>
</td>
</tr></table>


dmitryst 17-09-2008 23:39 902049

Coutty, фигассе конструкция.. Понятно, почему у меня ничего не получилось :(. Спасибо обоим!

Coutty 18-09-2008 03:59 902151

dmitryst, это упрощённый вариант от:
HTML код:

if (this.checked)  // или if (document.getElementById('test-check').checked)
    document.getElementById('chbxStatus').style.backgroundColor = 'green';
else
    document.getElementById('chbxStatus').style.backgroundColor = 'red';

Сама конструкция означает:
Код:

условие ? "вернуть, если условие верно" : "вернуть, если условие не верно"
А раз возвращает значение, значит можно его присвоить чему-нибудь)

Но, в общем, это Arrest придумал как реализовать кросс-браузерно ;) У меня почему-то получалось только для Оперы - присваивал к .style = "background-color:green", а оно - только для чтения в других браузерах.


Время: 13:32.

Время: 13:32.
© OSzone.net 2001-