Выбор radiobutton в ячейке таблицы
Есть таблица с ячейками, в каждой из которых есть элемент input с типом radio. Смысл такой - при клике мышей на ячейку таблицы должен устанавливаться в selected радиобаттон, который расположен внутри этой ячейки. Написал такую вот функцию, реализована подсветка выбранной ячейки, но не знаю как правильно в ячейки найти элемент типа input и установить ему атрибут checked.
function cellClick(td) {
var elements = document.getElementsByTagName('td');
for (var i = 0; i < elements.length; i++)
{
if(elements[i].className=='select_pay_radio')
{
elements[i].bgColor='#EFEFEF';
// тут перекрашиваю все ячейки в один цвет (деактивирую, если какая-то уже была выбрана до этого)
}
}
td.bgColor='#ccc';
// здесь выделяю выбранную ячейку другим цветом
// и тут же нужно в этой ячейке отметить флагом checked input типа radio
}
|
У тебя есть td, который как я понимаю является кликнутой ячейкой.
Далее все просто:
for (var childItem in td.childNodes) {
if (td.childNodes[childItem].nodeType == 1)
td.childNodes[childItem].checked = true;
}
Обход детей: здесь |
ie 9+
td.querySelector("input[type=radio]").checked = true;
|
cmygeHm, GuardCat, спасибо! Оба варианта работают.
Оказывается я пробовал уже их применять, но не указывал td. а вместо него писал elements. Возможно кому-то тоже понадобится такая функция:
function cellClick(td) {
var elements = document.getElementsByTagName('td');
// снимаем со всех ячеек выделение цветом (если было установлено ранее)
for (var i = 0; i < elements.length; i++)
{
if(elements[i].className=='select_pay_radio')
{
elements[i].bgColor='#EFEFEF';
}
}
// устанавливаем другой цвет для выбранной ячейки
td.bgColor='#ccc';
// активируем radio внутри выбранной ячейки
for (var childItem in td.childNodes)
{
if (td.childNodes[childItem].nodeType == 1)
{
td.childNodes[childItem].checked = true;
}
}
}
|
На здоровье! Расти большой! :)
Да, в моем варианте действительно надо бы убеждаться, что это радиобатон, а то сделаешь checked = true для какого-нибудь textarea :) |
| Часовой пояс GMT +3, время: 17:36. |