document.getElementsByName отсутствует в Gecko / Firefox в документах SVG - PullRequest
3 голосов
/ 22 февраля 2011

У меня есть документ SVG, в котором я использую JavaScript для выделения элементов при наведении курсора. Все мои элементы имеют имена - некоторые элементы имеют одно и то же имя, потому что, хотя они появляются несколько раз, они логически ссылаются на одно и то же. Когда один экземпляр реплицируемого элемента наведен, я хочу, чтобы все они были выделены.

Чтобы произвести подсвечивание, я смотрю название элемента, над которым наведен курсор. Затем я звоню document.getElementsByName(), чтобы найти все элементы, разделяющие это имя. С возвращенным массивом элементов я итеративно применяю соответствующий стиль для выделения.

Это прекрасно работает на WebKit и не работает на Gecko - последний сообщает мне, что getElementsByName не определено. Что, глядя на таблицу функций для document, действительно имеет место: getElementsByClassName, getElementsByTagName, getElementsByTagNameNS все здесь; getElementsByName отсутствует.

Есть идеи, почему Геккон оставляет этот селектор? Google был бесполезен в этом вопросе (хотя я, возможно, задавал неправильные вопросы).

Есть какие-нибудь предложения для компактного решения проблемы отсутствия поддержки Gecko для этого селектора? Я бы предпочел не захватывать атрибут класса или (что еще хуже) генерировать уникальные идентификаторы для моих повторных экземпляров для выполнения задачи.

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Вопрос в том, является ли документ SVG документом (X) HTML?https://developer.mozilla.org/en/DOM/document.getElementsByName

FTA:

Атрибут name применим только к (X) документам HTML.Метод возвращает все элементы с атрибутом имени, например, или или даже если имя помещено в элементы, которые вообще не поддерживают атрибут имени.

0 голосов
/ 23 марта 2013

@ roatin-marth указал мне путь к ответу здесь, но никогда не публиковался как ответ. Я думал, что запомню его предложение здесь, если оно кому-нибудь поможет.

Использование querySelectorAll обеспечивает компактный обходной путь, который я искал - он должен быть более надежным (и более гибким), чем getElementsByName.

...