|
|
|
| <p name='name'>ass</p>
<p name='name'>asd</p>
<script type="text/javascript">
var name = document.getElementsByName("name");
alert(name.childNodes.length);
</script>
IE выдает ошибку...почему ? | |
|
|
|
|
|
|
|
для: Vladisimus
(09.11.2011 в 12:49)
| | А атрибут name разве допускается в тэге p? Может лучше воспользоваться class? | |
|
|
|
|
|
|
|
для: cheops
(09.11.2011 в 14:08)
| | Атрибут name появился в браузерах раньше атрибута id и применяется он абсолютно к любым тегам.
А вот советовать использовать атрибут class в качестве идентификатора для тега - это очень плохой тон. class - он для определения стилей задуман. | |
|
|
|
|
|
|
|
для: АЯС
(09.11.2011 в 15:45)
| | Спорно... класс задуман для задания класса тэгов, а уж что с ними потом делать - обходить в цикле или стили накладывать - это проблема программного конкретного приложения. Я заметил, что два тэга имеют одно и то же имя, вот это очень плохой тон. Поэтому и предложил class. | |
|
|
|
|
|
|
|
для: cheops
(09.11.2011 в 16:11)
| | >"два тэга имеют одно и то же имя, вот это очень плохой тон"
Никак нет.
Атрибут name, например, может использоваться для формирования группы радиокнопок. Именно НАДО тогда двум и более радиокнопкам назначать одинаковые имена.
Требовать уникальности можно (и нужно) только для атрибута id.
Именно поэтому в DOM:
-- есть метод getElementById - который выдает один-единственный объект с уникальным id
-- и есть метод getElementsByName - который выдает коллекцию объектов, имеющих одинаковые name. | |
|
|
|
|
|
|
|
для: Vladisimus
(09.11.2011 в 12:49)
| | http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=83177#post494834
А кроме name вы никаких других английских слов не знаете? :-)
var name = document.getElementsByName("name") [0];
|
К любой глобальной переменной, определённой как var peremennaya, можно обратиться через свойство объекта window, а именно как window.peremennaya
После вашего "удивительного" кода имя текущего окна станет ОБЪЕКТОМ: window.name == тег <p> с атрибутом name, равным name, а должно быть - строкой символов. | |
|
|
|
|
|
|
|
для: АЯС
(09.11.2011 в 15:42)
| |
var name = document.getElementsByName("name") [0];
|
или так
var name = document.getElementsByName("name");
|
- это правильно в нормальных браузерах типа FF, в IE не работает
в IE
var name = document.getElementsByName("name");
| - работает, но не так
следуя логике стандартов и первой строке == object, , т.е. нужный нам тег <p> и его тип, а в IE не получается выбирать элементы из списка в значении переменной name, хотя сам тип данных name == object, а тип name[0] = undefined; | |
|
|
|
|
|
|
|
для: Vladisimus
(09.11.2011 в 21:11)
| | Повторяю для тех, кто в бронетранспортёре.
1. У объекта window по умолчанию существует несколько свойств (и методов).
2. Каждое из этих свойств (методов) имеет какое-то своё имя. Например, window.top, winow.name, window.alert (), window.setTimeout ()...
3. Любое (подчёркиваю - ЛЮБОЕ) из этих свойств (методов) можно использовать БЕЗ указания объекта window и всё будет прекрасно работать. Например, можно написать alert ('Hello!') (безо всякого window с точкой впереди) и всплывёт окошко с надписью Hello! Можно, не ссылаясь на объект window, запросить имя этого самого window, т. е. написать alert (name) и броузер выведет имя текущего окна.
4. Умные люди эту возможность как раз и используют (для сокращения записи кода).
5. Однако, кроме умных людей, имеются в огромном количестве ещё и ДРУГИЕ люди. Это как раз те, кто с упорством, достойным иного применения, пытаются переназначить существующие имена свойств (методов) объекта window. Этим "другим" людям почему-то обязательно надо иметь глобальную переменную именно под именем top (см. здесь). Или - под именем name...
В результате возникают программные конфликты.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: АЯС
(10.11.2011 в 00:04)
| | Уважаемый АЯС вас никто не оскорблял пока ещё, спасибо за комментарий, да действительно name это имя окна...суть не в том
Метод document.getElementsByName не будет работать с остальными элементами типа div,p и т.п.
Он работает только с теми элементами, для которых в спецификации явно предусмотрен атрибут name: это form, input, a, select, textarea и ряд других
инф. с сайта http://javascript.ru/tutorial/dom/search
хотя из практике аттрибут очень хорошо работает в FF к DIV и P, в других браузерах не проверял | |
|
|
|