imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 28.01.2004, 01:31     # 1
Izzyy
Junior Member
 
Аватар для Izzyy
 
Регистрация: 20.06.2003
Адрес: Israel
Сообщения: 106

Izzyy Путь к славе только начался
getElementsByName

Помогите.

<div id=main name=main>
bla bla bla.....................
</div>

почему конструция:
document.getElementById('main').innerHTML
возращает мне желаемый результат а конструция:
document.getElementsByName('main').innerHTML
нет?
Я может чего недопонимаю?
Izzyy вне форума  
Старый 28.01.2004, 01:39     # 2
Stasik
Registered User
 
Аватар для Stasik
 
Регистрация: 27.03.2002
Адрес: дома
Сообщения: 1 660

Stasik Известность не заставит себя ждатьStasik Известность не заставит себя ждать
getElementsByName imho функции такой нет т.к. JS работает только с id, a name для VBS.....
__________________
Всё будет хорошо!
Stasik вне форума  
Старый 28.01.2004, 01:56     # 3
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Stasik
Есть такая функция

Izzyy
1. getElementsByName возвращает коллекцию, а не один элемент, поэтому нужно обходить все элементы последовательно.
2. В теге div параметр name не используется.

MSDN - getElementsByName() method
MSDN - DIV element
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti

Последний раз редактировалось Saruman; 28.01.2004 в 01:59.
Saruman вне форума  
Старый 28.01.2004, 07:38     # 4
Izzyy
Junior Member
 
Аватар для Izzyy
 
Регистрация: 20.06.2003
Адрес: Israel
Сообщения: 106

Izzyy Путь к славе только начался
Секундочку. Зачем обходить все элементы?
Разве он недолжен находить элемент по имени?
Izzyy вне форума  
Старый 29.01.2004, 00:01     # 5
joker99
Full Member
 
Аватар для joker99
 
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924

joker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форуме
getElementById возврашяет элемент если он один с таким id, или список если таких элементов несколько.
getElementsByName возвращяет список, даже если элемент с таким именем один.
__________________
Столько дел, что и работой занятся некогда...
joker99 вне форума  
Старый 29.01.2004, 01:37     # 6
Izzyy
Junior Member
 
Аватар для Izzyy
 
Регистрация: 20.06.2003
Адрес: Israel
Сообщения: 106

Izzyy Путь к славе только начался
Ну хорошо, а как я могу достучаться до нужно мне элемента? Как именно я его выбираю из списка возвращенных элементов? Или такое не возможно? Тогда я не пойму в чем смысл функции........
Izzyy вне форума  
Старый 29.01.2004, 03:40     # 7
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Izzyy
Смысл функции в том, что вернуть все элементы, для которых name=запросу. Затем ты этот список обходишь как обычный массив, циклом, к примеру, и уже анализируешь элементы. Один и тот же name может быть присвоен любому числу элементов, а id должен быть уникальным - отсюда и разница в работе.
Если не знаешь, как работать на ява-скрипте с коллекциями - то так и спрашивай. Если знаешь - то что непонятно-то?
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 29.01.2004, 23:13     # 8
Izzyy
Junior Member
 
Аватар для Izzyy
 
Регистрация: 20.06.2003
Адрес: Israel
Сообщения: 106

Izzyy Путь к славе только начался
На сколько ты уверен в том, что ИД должен быть уникальным? Потому как у меня есть страницы, в которых один и тот же ИД используется несколько раз. Я почему-то наивно полагал, что ИД необходим для определения таблицы стилей для элемента и вовсе не обязательно, что бы элемент с определенным ИД был один единственный. Я могу создать столько слоев сколько я захочу с одним и тем же ИД(например) тогда на мой взгляд getElementById вернет мне массив этих слоев.
Я был полностью уверен, что getElementByName работате по такому же принципу есть один элемент возвращает один, есть несколько возвращает несколько.
Т.е. из твоих солв я должен делать что-то типа:


for (i=0;i<getElementByName('example').lenght;i++)
{
и в этом цикле проверять тот ли это элемент который мне нужен?
}
Теперь поправте меня если я где ошибся.....
Izzyy вне форума  
Старый 30.01.2004, 00:15     # 9
joker99
Full Member
 
Аватар для joker99
 
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924

joker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форуме
Цитата:
Izzyy:
цикле проверять тот ли это элемент который мне нужен?
если тебе нужен определённый элемент, дай ему ИД который не повторяется, а для CSS используй атрибут class.

Например:

<input id=UniqueID class=CssClass>
__________________
Столько дел, что и работой занятся некогда...
joker99 вне форума  
Старый 30.01.2004, 00:28     # 10
Izzyy
Junior Member
 
Аватар для Izzyy
 
Регистрация: 20.06.2003
Адрес: Israel
Сообщения: 106

Izzyy Путь к славе только начался
Хорошо.Допустим.
А теперь все таки еще раз вопрос КАК я могу найти нужный мне элемент по имени? Я не могу понять как ИД так и имена элементов могут повторяться разное кол-во раз. НО почему-то ф-ция getElementsByName отличается от getElementById.
Короче, если мне проще использовать getElementsByName так, я должен делать проверку в цикле для каждого элемента из массива возвращенных, проверяя длину возвращенного массива?
Izzyy вне форума  
Старый 30.01.2004, 00:42     # 11
joker99
Full Member
 
Аватар для joker99
 
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924

joker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форуме
если тебе очень важно использовать getElementsByName , то используй её но давай всегда уник имена и бери первый(и единственный) член коллекции которую она вернёт
__________________
Столько дел, что и работой занятся некогда...
joker99 вне форума  
Старый 30.01.2004, 00:42     # 12
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Izzyy
Цитата:
Потому как у меня есть страницы, в которых один и тот же ИД используется несколько раз.
Я же не сказал, что так нельзя написать. Я сказал, что это неправильно. W3C для тебя достаточно авторитетный источник? 8) Читаем в HTML 4.01 спецификации:
Цитата:
id = name [CS]
This attribute assigns a name to an element. This name must be unique in a document.
Вопросы?
Цитата:
Я почему-то наивно полагал, что ИД необходим для определения таблицы стилей для элемента и вовсе не обязательно, что бы элемент с определенным ИД был один единственный. Я могу создать столько слоев сколько я захочу с одним и тем же ИД(например) тогда на мой взгляд getElementById вернет мне массив этих слоев.
Верно мыслишь, наивно 8) Не вернет.
Цитата:
Т.е. из твоих солв я должен делать что-то типа:
for (i=0;i<getElementByName('example').lenght;i++)
{
и в этом цикле проверять тот ли это элемент который мне нужен?
}
Верно
Цитата:
Теперь поправте меня если я где ошибся.....
getElementByName('example').length 8)))
Цитата:
НО почему-то ф-ция getElementsByName отличается от getElementById.
Уже три раза объяснил почему. Если все еще не понял - спрашивай, объясню четвертый 8)
Цитата:
Короче, если мне проще использовать getElementsByName так, я должен делать проверку в цикле для каждого элемента из массива возвращенных, проверяя длину возвращенного массива?
В общем да. Обходишь весь массив и выбираешь нужный тебе элемент.
А вообще, если честно, не надо маяться и приспосабливать для своих целей то, что для них не приспособлено. Проставь везде уникальные id и обращайся напрямую к элементу, т.к. оно для этого и служит.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 30.01.2004, 01:32     # 13
Izzyy
Junior Member
 
Аватар для Izzyy
 
Регистрация: 20.06.2003
Адрес: Israel
Сообщения: 106

Izzyy Путь к славе только начался
Ок, я более не менее разобрался, теперь я знаю куда копать.
Izzyy вне форума  
Старый 31.01.2004, 00:10     # 14
Vaulter
Guest
 
Сообщения: n/a

в спецификации по Опере четко написанно что они поддержали НЕ ВСЕ функции DOM например,
тоже самое и с IE и Gecko
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 00:48.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.