Официальная спецификация для HTML гласит, что теги id должны быть уникальными И Официальная спецификация также гласит, что если рендеринг может быть завершен, он должен (т.е. в HTML не существует такого понятия, как «ошибки»)., только "недействительный" HTML). Итак, вот как на самом деле работают теги id .Все они недействительны , но все еще работают:
This:
<div id="unique">One</div>
<div id="unique">Two</div>
Хорошо отрисовывается во всех браузерах.Однако document.getElementById возвращает только объект, а не массив;Вы только сможете выбрать первый div с помощью тега id.Если вы измените идентификатор первого элемента div с помощью JavaScript, второй идентификатор будет доступен с document.getElementById (протестировано в Chrome, FireFox и IE11).Вы все еще можете выбрать div, используя другие методы выбора, и его свойство id будет возвращено правильно.
Обратите внимание Эта проблема выше открывает потенциальную уязвимость безопасности на сайтах, которые отображают изображения SVG, так какSVG могут содержать элементы DOM, а также теги id на них (позволяет перенаправлять DOM скрипта через загруженные изображения).Пока SVG находится в DOM до того, как заменяет элемент, изображение будет получать все события JavaScript, предназначенные для другого элемента.
На данный момент, насколько я знаю, этой проблемы пока нет ни у кого на радаре.это реально.
Это:
<div id="unique" id="unique-also">One</div>
Также хорошо отображается во всех браузерах.Однако, только идентификатор first , который вы определили таким образом, используется, если вы пытались document.getElementById ('unique-также');в приведенном выше примере вам будет возвращено null (проверено на Chrome, FireFox и IE11).
This:
<div id="unique unique-two">Two</div>
Также хорошо отображается во всех браузерах,однако, в отличие от тегов классов, которые могут быть разделены пробелом, тег id допускает пробелы, поэтому идентификатором вышеупомянутого элемента на самом деле является «unique unique-two», и в dom запрашивается «unique» или «unique-two» визоляция возвращает ноль , если не указано иное в DOM (протестировано на Chrome, FireFox и IE11).