как получить объект из tr

 
0
 
JavaScript
ava
markus_smile | 15.08.2007, 15:10
Всем привет!

Help!!!!!!!!!!!

Помогите, всю голову сломал! smile

Есть объект TR в одном из его TD есть checkbox, как получить доступ к нему?

пробовал все основные варианты, с oject.all, ChildnNodes, Children везде работает кроме FireFox! smile
Comments (9)
ava
SamDark | 15.08.2007, 14:16 #
markus_smile,
А не проще ему id присвоить?
ava
Exception | 15.08.2007, 14:18 #
<input type="checkbox" id="someCheckBox" />
var someCheckBox = document.getElementById ("someCheckBox");
ava
markus_smile | 15.08.2007, 14:27 #
суть в том что боксов много и в качестве имени стоит название массива. Что-то вроде id='id_list[]'

зачем это нужно?

это нужно для того чтобы при передаче через POST на стороне сервера сразу получить массив со значениями элементов.

прошу прощения за косяк в сторону chilNodes, всё работает это видимо я чего-то не досмотрел

код получился следующий



for(i=0;i<em.childNodes.length;i++){
if(em.childNodes[i].nodeName=='TD'){
var td_1 = em.childNodes[i];
for(j=0;j<td_1.childNodes.length;j++){
if(td_1.childNodes[j].id=='list_id[]'){
var curCheckBox = td_1.childNodes[j];
break;
}
}
}
}



Я бы сказал он очень громоздкий, есть ли что-то более компактное (чтобы и firefox работало)?
ava
12345c | 15.08.2007, 15:36 #
Для передачи по post такие имена пишут в name:
<input ... name="list_id[]">
Поэтому id свободны для именований.
Если же прямо отвечать на вопрос, то проблема возникла, видимо, из-за того, что в FF пробелы и переносы строк в html воспринимаются как дополнительные ноды (текстовые). Поэтому при пробегании по childNodes[] их надо обнаруживать и пропускать.

Ещё непонятно, почему нет Ваших претензий к Опере - в ней точно так же.
ava
markus_smile | 15.08.2007, 16:48 #
на данный момент проблем нет, приведённый код работает под всеми браузерами.

вопрос в том, есть ли более простые способы получить список подэлементов?
ava
smartov | 15.08.2007, 17:12 #

var inputs = document.getElementsByTagName('input');
var checkboxes = new Array();

for (var i=0; i < inputs.length; i++) {
if (inputs[i] == null)
continue;
if (inputs[i].type != 'checkbox')
continue;

checkboxes.push(inputs[i]);
}


Так получаются все чекбоксы на странице.
Можно получить только являющиеся подэлементами какого-то tr


vat TR = document.getElementById('TR_ID');
var inputs = TR.getElementsByTagName('input');
var checkboxes = ...

и дальше по тексту
ava
vasac | 15.08.2007, 17:36 #
smartov, checkbox не элемент smile
document.getElementsByTagName("input"); а дальше смотреть "type"
ava
smartov | 15.08.2007, 22:38 #
Цитата (vasac @ 15.8.2007, 16:36 findReferencedText)
checkbox не элемент

Ой йопт smile Как меня проглючило.
Спасибо, поправил. По инерции вписал-с smile
ava
markus_smile | 16.08.2007, 11:05 #
Всем спасибо!!! smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit