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


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

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

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

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

16 272

16 ответов:

нет. Из XHTML 1.0 Spec

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

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

The спецификации селекторов очень ясно говорит об этом:

Если элемент имеет несколько атрибутов ID, все они должны рассматриваться как идентификаторы для этого элемента для целей селектора ID.Такая ситуация может быть достигнута при использовании смесей из XML:идентификатор, DOM3 ядра, по XML определения DTD, и пространство-специфические знание.


Edit

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

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

но присвоение нескольких идентификаторов одному и тому же 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 (). Какой идентификатор он собирается захватить, если их несколько?

на немного связанную тему, вы можете добавить несколько классы в 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 присваивает a уникальный идентификатор элемента (который может быть проверены синтаксический анализатор SGML).

и

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

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

нет.

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

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

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

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

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

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

Я хотел бы сказать технически да, так как на самом деле то, что визуализируется, технически всегда зависит от браузера. Большинство браузеров стараются придерживаться спецификаций как можно лучше, и насколько я знаю, в спецификациях 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" стоимостью.

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

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