Использование getElementsByName без запуска в корне документа - PullRequest
2 голосов
/ 20 мая 2010

Есть ли способ использовать getElementsByName без запуска из корня DOM.

Например, у меня есть элемент div, и я хочу начать поиск с этого элемента.

Если нет, то мне нужно написать свою собственную функцию, которая рекурсивно перебирает дочерние узлы, или есть другой способ сделать это.

Ответы [ 4 ]

5 голосов
/ 20 мая 2010

getElementsByName и getElementById оба являются членами объекта document и не являются частью прототипа HTMLElement. В современных браузерах (IE8, Firefox, Chrome, Opera) вы можете использовать element.querySelectorAll("*[name='myName']").

Кроме этого, вы можете использовать библиотеку, такую ​​как Sizzle или структуру, такую ​​как jQuery (которая использует Sizzle) для работы с селекторами.

0 голосов
/ 20 мая 2010

В основном это DOM, поэтому каждый раз, когда вы ищете какой-либо элемент по NAME или ID, он может запускаться из какой-то контрольной точки.

Скажем, вы хотите какой-то элемент из формы с именем Form1, тогда вы можете написать

document.Form1.fieldName

, который даст вам конкретное поле.

Но все это должно быть абсолютным путем. Потому что, если у вас есть какая-то ссылка, вы можете ссылаться на ее детей.

Jquery an yUI обеспечивает лучшую поддержку для извлечения и установки элементов DOM. JQuery облегчает вещи, которые сложны в JavaScript.

попробуйте www.jquery.com

спасибо.

0 голосов
/ 20 мая 2010

ты пробовал.

document.getElementsbyTagName ("div") [0] .getElementsbyName ("ваш поиск");

также с помощью селекторов jQuery поиск элементов dom упрощается.

0 голосов
/ 20 мая 2010

Это не имеет никакого смысла, потому что значение каждого атрибута "id" в каждом теге в документе должно быть уникальным.

Из-за этого не имеет значения, где вы «начинаете».

изменить & mdash; не берите в голову, если вы говорите о getElementsByTagName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...