Может ли элемент html иметь несколько идентификаторов?

Я понимаю, что идентификатор должен быть уникальным на странице HTML / XHTML.

мой вопрос в том, что для данного элемента я могу назначить ему несколько идентификаторов?

<div id="nested_element_123 task_123"></div>

Я понимаю, что есть простое решение с использованием класса. Мне просто интересно использовать ID таким образом.

16 ответов


нет. От XHTML 1.0 Spec

в XML идентификаторы фрагментов имеют введите ID, и может быть только один атрибут типа ID на элемент. Таким образом, в XHTML 1.0 в атрибут id определяется как тип ИДЕНТИФИКАТОР. Чтобы гарантировать, что XHTML 1.0 документы хорошо структурированы XML документы, XHTML 1.0 документы должны использовать атрибут id при определении идентификаторы фрагментов на элементах перечисленный выше. См. HTML Принципы совместимости информация об обеспечении таких якорей обратная совместимость при подаче Документы XHTML как тип носителя text / html.


вопреки тому, что все остальные сказали, правильный ответ Да

на селекторы spec очень ясно говорит об этом:

если элемент имеет несколько атрибутов ID, все они должны рассматриваться как идентификаторы для этого элемента для селектора ID.Такая ситуация может быть достигнута с использованием смесей xml: id, Dom3 Core, XML DTDs и пространства имен знание.


редактировать

чтобы уточнить: Да, элемент XHTML может иметь несколько идентификаторов, например

<p id="foo" xml:id="bar">

но присвоение нескольких идентификаторов одному и тому же id атрибут использование списка, разделенного пробелами, невозможно.


мое понимание всегда было:

  • ID являются один использовать и применяются только к одному элементу...

    • каждый приписывается как уникальный идентификатор (только) одному элементу.
  • классы могут использоваться еще раз...

    • поэтому они могут быть применены к более одного элемента, и аналогично еще разные, может быть более одного класса (т. е. несколько классов) на элемент.

нет. С определение из w3c для HTML 4, похоже, явно не охватывает ваш вопрос,определение атрибута name и id говорит нет пробелов в идентификаторе:

маркеры ID и NAME должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов ( " - " ), подчеркиваний ("_"), двоеточий ( " :") и периодов (".").


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

<div id='enclosing_id_123'><span id='enclosed_id_123'></span></div>

и затем использовать навигацию, чтобы получить то, что вы действительно хотите.

Если вы просто хотите применить стили, имена классов лучше.


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

<div id="foo" class="bar baz bax">

совершенно законно.


нет, вы должны использовать вложенные DIVs, если хотите отправиться по этому пути. Кроме того, даже если бы вы могли вообразить это приведет при запуске документа.getElementByID (). Какой ID он собирается захватить, если их несколько?

по слегка связанной теме вы можете добавить несколько классы в DIV. См. обсуждение Эрика Майерса в,

http://meyerweb.com/eric/articles/webrev/199802a.html


нет, вы не можете иметь несколько идентификаторов для одного тега, но я видел тег и id атрибут, которые обрабатываются одинаково некоторыми приложениями.


http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2

атрибут id назначает уникальный идентификатор элемента (который может быть проверено анализатором SGML).

и

маркеры ID и NAME должны начинаться с буквы ([A-Za - z]) и могут быть за которым следует любое количество букв, цифр ([0-9]), дефисов ("-"), подчеркивания ( " _ "), двоеточия ( " :") и периоды (".").

поэтому " id " должен быть уникальным и не может содержать пробел.


нет.

сказав это, нет ничего, чтобы остановить вас сделать это. Но вы получите несовместимое поведение с различными браузерами. Не делай этого. 1 ID на элемент.

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


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


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

в ответ на ответ tvanfosson относительно использования одного и того же идентификатора в двух разных элементах. Насколько мне известно, ID может использоваться только один раз в страница независимо от того, прикреплена ли она к другому тегу.

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


Я хотел бы сказать технически да, так как на самом деле то, что визуализируется, технически всегда зависит от браузера. Большинство браузеров стараются придерживаться спецификаций как можно лучше, и, насколько я знаю, в спецификациях css нет ничего против этого. Я только собираюсь поручиться за фактический html, css, javascript-код, который отправляется в браузер перед любыми другими шагами интерпретатора.

однако я также говорю нет, так как каждый браузер, который я обычно тестирую, на самом деле не позволяет вы. Если вам нужно посмотреть на себя, сохранить как .html-файл и откройте его в основных браузерах. Во всех браузерах, которые я тестировал на javascript, функция не будет соответствовать элементу. Однако удалите либо "hunkojunk" из тега id, и все работает нормально. Пример Кода

<html>
<head>
</head>
<body>
    <p id="hunkojunk1 hunkojunk2"></p>

<script type="text/javascript">
    document.getElementById('hunkojunk2').innerHTML = "JUNK JUNK JUNK JUNK JUNK JUNK";
</script>
</body>
</html>

классы специально сделаны для этого, вот код, из которого вы можете понять

<html>
<head>
    <style type="text/css">
     .personal{
            height:100px;
            width: 100px;   

        }
    .fam{
            border: 2px solid #ccc;
        }   
    .x{
            background-color:#ccc;
        }   

    </style>
</head>
<body>

    <div class="personal fam x"></div>

</body> 
</html>

нет.

https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute

значение не должно содержать пробелов.

id="a b" стоимостью.

ты можете стиль несколько идентификаторов. Но если вы следуете спецификации, ответ-нет.


Я не думаю, что у вас может быть два идентификатора, но это должно быть возможно. Использование одного и того же id дважды-это другой случай... как два человека, пользующиеся одним паспортом. Однако один человек может иметь несколько паспортов... Пришел к этому так как у меня ситуация, когда один сотрудник может иметь несколько функций. Скажем, " sysadm "и" team coordinator", имеющие id=" sysadm teamcoordinator", позволят мне ссылаться на них с других страниц, чтобы сотрудники.html#sysadm и сотрудники.html#teamcoordinator приведет к тому же месту... Однажды кто-то другой может взять на себя функцию координатора команды, в то время как sysadm остается sysadm... тогда мне нужно только изменить идентификаторы сотрудников.HTML-страница. .. но, как я уже сказал - это не работает : (