powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] Массив чекбоксов + Опера + DHTML
4 сообщений из 4, страница 1 из 1
[JS] Массив чекбоксов + Опера + DHTML
    #35164926
Фотография xxx_GMS_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все просто - генерируется массив элементов такого вида:
Код: plaintext
<input type="checkbox" name="sel[]" value="'+i+'">
Здесь "i" - переменная (массив генерируется динамически и выводится при помощи innerHTML). Пытаюсь получить к нему доступ так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var elem = document.forms["left_grid"].elements["sel[]"];
var cnt_test = (typeof(elem) != 'undefined') && (typeof(elem.length) != 'undefined') ? elem.length :  0 ;

  if (cnt_test){
    for (var i =  0 ; i < cnt_test; i++){
      if (elem[i].checked){
        alert(files[elem[i].value].nm);
        //Тут чегой-то надо сотворить, но пока тут пусто...  
      }
    }
  }else{
    show_error_message('Внутренняя ошибка! Обратитесь к администратору.');
  }
Эта батва работает в IE (5 и 6 пробовал), в мазиле, однако в опере (9.26, 9.10 и 8.50) не работает категорически!!!
Код: plaintext
alert(typeof(elem));
выдает в Операх "ундефинед" - хоть ап стенку бейся. Кто знает, как фиксить - хэлп, плиз!!! Срочно надо!!!
...
Рейтинг: 0 / 0
[JS] Массив чекбоксов + Опера + DHTML
    #35165063
mrJust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
во первых:
xxx_GMS_xxx
Код: plaintext
value="'+i+'"

здесь i - никакая не переменная, а часть строки!
во вторых: 'undefined' надо писать без ковычек

для выборки попробуйте написать вот так: (не помню нужны квадратные скобки или нет, кажется нужны)
Код: plaintext
1.
2.
3.
4.
var arElements = document.getElementsByName('sel[]');
for (var i= 0 ; i<arElements.length; i++)
{
  // do something
}
...
Рейтинг: 0 / 0
[JS] Массив чекбоксов + Опера + DHTML
    #35165081
Фотография xxx_GMS_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrJustздесь i - никакая не переменная, а часть строки!
во вторых: 'undefined' надо писать без ковычекЭто был кусок строки, которая потом записывается при помощи innerHTML. Проверял после формирования innerHTML - с формой все ок, все инпуты на месте, имена в порядке.
mrJust
Код: plaintext
1.
2.
3.
4.
var arElements = document.getElementsByName('sel[]');
for (var i= 0 ; i<arElements.length; i++)
{
  // do something
}
Гм... Не то, что бы помогло... Пишу так:
Код: plaintext
1.
2.
var elem = document.getElementsByName('sel[]');
alert(elem.length);
Если стоят квадратные скобки - плюет ошибкой, что "ундефинед" не имеет length. Если убираю квадратные скобки - ошибки нет, до длина получается равной нулю Соответственно, перебрать ничего не получается. Нет никаких идей, чего еще можно сделать?

Да! Вот еще: у меня там 2 формы сименами left_grid и right_grid, расположены в div'ах с id "left_panel" и "right_panel" соответственно. sel у них имеет одно имя.
...
Рейтинг: 0 / 0
[JS] Массив чекбоксов + Опера + DHTML
    #35165083
Фотография xxx_GMS_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, сделал... Присвол им разные имена и поюзал document.getElementsByName Просто изначально я их планировал вызывать как дочерние элементы форм, а потому сделал формы с разными именами, а массивы обозвал одинаково. Потому getElementsByName сначала и не сработал. Теперь пашет и в Опере, и в Осле

Спасибо mrJust, мне как-то и в голову такой вариант решения не приходил
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] Массив чекбоксов + Опера + DHTML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]