Javascript принимает путь в getElementsByTagName

110
14

Я искал ответ на этот вопрос: должен ли работать следующий фрагмент?

getElementsByTagName("parent/child/grand-child");

Для такой структуры:

<parent>
<child>
<grand-child></grand-child>
</child>
</parent>

Моя конкретная проблема заключается в том, что она работает в среде разработки, и один раз в процессе производства нет, и я получаю сообщение "Это имя не может содержать символ"/".

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

спросил(а) 2014-09-30T10:44:00+04:00 6 лет, 1 месяц назад
1
Решение
72

Нет, getElementsByTagName принимает только имя тега.

Но вы можете использовать querySelector и querySelectorAll с селектором CSS:

var element = document.querySelector("parent child grand-child");

или

var elements = document.querySelectorAll("parent > child > grand-child");

ответил(а) 2014-09-30T10:46:00+04:00 6 лет, 1 месяц назад
60

Нет. getElementsByTagName получает элементы по имени тега, а не по их пути. Используйте XPath для путей: document.evaluate (IE, опять же, делает это по-другому) или используйте селектор CSS с document.querySelector и document.querySelectorAll.

ответил(а) 2014-09-30T10:46:00+04:00 6 лет, 1 месяц назад
-6

Вы всегда можете использовать jQuery для итерации через дочерние элементы элемента с помощью селектора.

var elem = $( "parent > child > grand-child" );

ответил(а) 2014-09-30T10:54:00+04:00 6 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема