Выбор 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, время: 15:34. |