html - film - dom javascript примеры



Может ли несколько разных элементов HTML иметь один и тот же идентификатор, если они разные? (9)

Является ли такой сценарий действительным ?:

div#foo
span#foo
a#foo

https://ffff65535.com


В официальной спецификации для HTML указано, что теги идентификаторов должны быть уникальными. В официальной спецификации также указывается, что если рендеринг может быть завершен, он должен (т. Е. В HTML нет «ошибок» в HTML, только «недействительный» HTML). Итак, следующим образом, как теги id фактически работают на практике . Все они недействительны , но все еще работают:

Эта:

<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, а также теги идентификаторов на них (позволяет перенаправлять сценарии DOM через загруженные изображения). Пока SVG помещается в DOM перед заменяемым элементом, изображение получит все события JavaScript, предназначенные для другого элемента.

Насколько я знаю, эта проблема в настоящее время не находится на чьем-то радаре, но это реально.

Эта:

<div id="unique" id="unique-also">One</div>

Также отображает все во всех браузерах. Однако используется только первый идентификатор, который вы определяете таким образом, если вы попытались document.getElementById ('unique-also'); в приведенном выше примере вам будет возвращен null (проверен на Chrome, FireFox и IE11).

Эта:

<div id="unique unique-two">Two</div>

Кроме того, рендеринг во всех браузерах отлично, но в отличие от тегов классов, которые могут быть разделены пробелом, тег id допускает пробелы, поэтому идентификатор вышеупомянутого элемента фактически является «уникальным уникальным-двумя» и запрашивает dom для «уникальных», или «unique-two» в изоляции возвращает значение null, если иное не указано в другом месте DOM (проверено на Chrome, FireFox и IE11).


Возможно ли иметь более одного студента в классе, имеющем тот же Roll / Id no? В атрибуте id HTML это так. Вы можете использовать для них один и тот же класс. например:

<div class="a b c"></div>
<div class="a b c d"></div>

И так далее.


И, по крайней мере, для Chrome 26.0.1410.65, Firefox 19.0.2 и Safari 6.0.3, если у вас несколько элементов с одинаковым идентификатором, селектор jquery (по крайней мере) вернет первый элемент с этим идентификатором.

например

<div id="one">first text for one</div>
<div id="one">second text for one</div>

а также

alert($('#one').size());

См. http://jsfiddle.net/RuysX/ для теста.


Нет двух элементов с одним и тем же идентификатором. Идентификаторы уникальны, если вы хотите сделать что-то подобное, используйте класс. Не забывайте, что элементы могут иметь несколько классов, используя пробел как разделитель:

<div class="myclass sexy"></div>

Нет.

Идентификаторы элементов должны быть уникальными в пределах всего документа.


Ну, используя валидатор HTML в w3.org , специфичный для HTML5, идентификаторы должны быть уникальными

Рассмотрим следующее ...

<!DOCTYPE html> 
<html>
    <head>
        <meta charset="UTF-8">
        <title>MyTitle</title> 
    </head>
    <body>
        <div id="x">Barry</div>
        <div id="x">was</div>
        <div id="x">here</div>
    </body>
</html>

валидатор отвечает ...

Line 9, Column 14: Duplicate ID x.      <div id="x">was</div>
Warning Line 8, Column 14: The first occurrence of ID x was here.       <div id="x">Barry</div>
Error Line 10, Column 14: Duplicate ID x.       <div id="x">here</div>
Warning Line 8, Column 14: The first occurrence of ID x was here.       <div id="x">Barry</div>

... но ОП конкретно заявлял - как насчет разных типов элементов. Поэтому рассмотрим следующий HTML ...

<!DOCTYPE html> 
<html>
    <head>
        <meta charset="UTF-8">
        <title>MyTitle</title> 
    </head>
    <body>
        <div id="x">barry
            <span id="x">was here</span>
        </div>
    </body>
</html>

... результат от валидатора ...

Line 9, Column 16: Duplicate ID x.          <span id="x">was here</span>
Warning Line 8, Column 14: The first occurrence of ID x was here.       <div id="x">barry

Вывод:

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


Я думаю, вы не можете этого сделать, потому что Id уникален, вам нужно использовать его для одного элемента. Вы можете использовать класс для этой цели


Я считаю, что существует разница между тем, является ли что-то ДОЛЖНЫ быть уникальными или ДОЛЖНЫ быть уникальными (т. Е. Обеспечиваться веб-браузерами).

Должны ли идентификаторы быть уникальными? ДА.

Идентификаторы должны быть уникальными? НЕТ, по крайней мере IE и FireFox позволяют нескольким элементам иметь один и тот же идентификатор.


<div id="one">first text for one</div>
<div id="one">second text for one</div>

var ids = document.getElementById('one');

Иды содержат только первый элемент div. Поэтому, даже если есть несколько элементов с одним и тем же идентификатором, объект документа будет возвращать только первое совпадение.





dom