Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: VVS от 03 Мая 2006, 14:47:27

Название: Проблема с массивом чекбоксов
Отправлено: VVS от 03 Мая 2006, 14:47:27
Есть много чекбоксов (код генерится в php), между ними формы:

....
blablabla


Выбрать: onClick="document.SubmitForm.cartcheck_[112].value = this.value">

blablabla


Выбрать: onClick="document.SubmitForm.cartcheck_[125].value = this.value">
.........




....




Сделано всё так, потому что вверху много форм... Т.е. при выборе чекбокса вверху, нижний тоже выбирается. И отправка идёт уже нижней формы.
Но выползает ошибка: document.SubmitForm.cartcheck_112. - есть null или не существует.... а если делаю имя чекбокса без массива, всё нормально.... но мне нужно именно массив, для обработки в post

_script.php: тестовый, для отлова выбранных чеков
echo "выбранные значения
\\n";
while(list($key,$val) = each($cartcheck_))
echo "ключ - $key
\\n";
?>
Название: Проблема с массивом чекбоксов
Отправлено: html_coder от 03 Мая 2006, 15:14:31
Ошибка вылезает потому что JavaScript не умеет понимать такие имена, решением как мне кажется здесь является использование id вместо name, и обращение к элементам при помощи document.getElementById(...), т.е. делать например для
 id = "check112" я так понимаю цифры беруться не с неба и скорее всего уникальны...

Ну это к вопросу почему не работает и как побороть.

А где логика document.SubmitForm.cartcheck_[112].value = this.value ведь если бы это работало это одно и тоже...????
Название: Проблема с массивом чекбоксов
Отправлено: VVS от 03 Мая 2006, 15:51:56
Цитировать
я так понимаю цифры беруться не с неба и скорее всего уникальны

да, уникальны

Цитировать
А где логика document.SubmitForm.cartcheck_[112].value = this.value ведь если бы это работало это одно и тоже...????


при клике на текущий чек, ставится то же состояние на его "клоне" в форме... не cartcheck_[112] а check_[112]

вот сделал:
Выбрать: onClick="javascript:document.getElementById(check112) = this.value;alert(this.checked)">//Говорит: check112 - определение отсутствует

......






Что опять не так? ;(
Название: Проблема с массивом чекбоксов
Отправлено: vasa_c от 03 Мая 2006, 15:52:11
document.getElementsByName( "cartcheck_[112]" ).item(0).value
Название: Проблема с массивом чекбоксов
Отправлено: VVS от 03 Мая 2006, 15:55:34
Цитировать
document.getElementsByName( "cartcheck_[112]" ).value


тоже самое, что и сначала было: не понимает имя_массив...
Название: Проблема с массивом чекбоксов
Отправлено: html_coder от 03 Мая 2006, 16:02:16
Потому что надо быть внимательнее и указывать ID объекта в кавычках при передаче его в функцию
onClick="document.getElementById(\'check112\')"

http://developer.mozilla.org/en/docs/DOM:document.getElementById (http://developer.mozilla.org/en/docs/DOM:document.getElementById)

Кстати vasa_c дал тебе вполне реальную конструкцию, которую ты тоже применил не так как он тебе указал!
Название: Проблема с массивом чекбоксов
Отправлено: vasa_c от 03 Мая 2006, 16:06:35
VVS, извиняюсь, исправил. ByName массив возвращает.
Название: Проблема с массивом чекбоксов
Отправлено: vasa_c от 03 Мая 2006, 16:07:47
html_coder, это я сначала так написал, но мне казалось я сразу же исправил.
Название: Проблема с массивом чекбоксов
Отправлено: VVS от 03 Мая 2006, 16:26:27
Спасибо, братцы!
Вот что у меня получилось (оба варианта):

Цитировать

Добавить: onClick="javascript:document.getElementById(\'cartcheck111\').checked = this.checked">
....






Добавить: onClick="javascript:document.getElementsByName(\'cartcheck_[112]\').item(0).checked = this.checked">
....