![]() |
getElementsByName
Помогите.
<div id=main name=main> bla bla bla..................... </div> почему конструция: document.getElementById('main').innerHTML возращает мне желаемый результат а конструция: document.getElementsByName('main').innerHTML нет? Я может чего недопонимаю? |
getElementsByName imho функции такой нет т.к. JS работает только с id, a name для VBS.....
|
Stasik
Есть такая функция Izzyy 1. getElementsByName возвращает коллекцию, а не один элемент, поэтому нужно обходить все элементы последовательно. 2. В теге div параметр name не используется. MSDN - getElementsByName() method MSDN - DIV element |
Секундочку. Зачем обходить все элементы?
Разве он недолжен находить элемент по имени? |
getElementById возврашяет элемент если он один с таким id, или список если таких элементов несколько.
getElementsByName возвращяет список, даже если элемент с таким именем один. |
Ну хорошо, а как я могу достучаться до нужно мне элемента? Как именно я его выбираю из списка возвращенных элементов? Или такое не возможно? Тогда я не пойму в чем смысл функции........
|
Izzyy
Смысл функции в том, что вернуть все элементы, для которых name=запросу. Затем ты этот список обходишь как обычный массив, циклом, к примеру, и уже анализируешь элементы. Один и тот же name может быть присвоен любому числу элементов, а id должен быть уникальным - отсюда и разница в работе. Если не знаешь, как работать на ява-скрипте с коллекциями - то так и спрашивай. Если знаешь - то что непонятно-то? |
На сколько ты уверен в том, что ИД должен быть уникальным? Потому как у меня есть страницы, в которых один и тот же ИД используется несколько раз. Я почему-то наивно полагал, что ИД необходим для определения таблицы стилей для элемента и вовсе не обязательно, что бы элемент с определенным ИД был один единственный. Я могу создать столько слоев сколько я захочу с одним и тем же ИД(например) тогда на мой взгляд getElementById вернет мне массив этих слоев.
Я был полностью уверен, что getElementByName работате по такому же принципу есть один элемент возвращает один, есть несколько возвращает несколько. Т.е. из твоих солв я должен делать что-то типа: for (i=0;i<getElementByName('example').lenght;i++) { и в этом цикле проверять тот ли это элемент который мне нужен? } Теперь поправте меня если я где ошибся..... |
Цитата:
Например: <input id=UniqueID class=CssClass> |
Хорошо.Допустим.
А теперь все таки еще раз вопрос КАК я могу найти нужный мне элемент по имени? Я не могу понять как ИД так и имена элементов могут повторяться разное кол-во раз. НО почему-то ф-ция getElementsByName отличается от getElementById. Короче, если мне проще использовать getElementsByName так, я должен делать проверку в цикле для каждого элемента из массива возвращенных, проверяя длину возвращенного массива? |
если тебе очень важно использовать getElementsByName , то используй её но давай всегда уник имена и бери первый(и единственный) член коллекции которую она вернёт
|
Izzyy
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
А вообще, если честно, не надо маяться и приспосабливать для своих целей то, что для них не приспособлено. Проставь везде уникальные id и обращайся напрямую к элементу, т.к. оно для этого и служит. |
Ок, я более не менее разобрался, теперь я знаю куда копать.
|
в спецификации по Опере четко написанно что они поддержали НЕ ВСЕ функции DOM например,
тоже самое и с IE и Gecko |
| Часовой пояс GMT +4, время: 23:58. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.