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

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

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

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

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

Ответ 1

Нет. Из XHTML 1.0 Spec

В XML идентификаторы фрагментов Идентификатор типа, и может быть только единственный атрибут идентификатора типа элемент. Поэтому в XHTML 1.0 id определяется как тип Я БЫ. Чтобы гарантировать, что XHTML 1.0 документы хорошо структурированные XML документы, документы XHTML 1.0 ДОЛЖНЫ используйте атрибут id при определении идентификаторы фрагментов на элементах вышеперечисленное. См. HTML Руководства по совместимости для информация об обеспечении таких якорей обратно совместимы при обслуживании Документы XHTML как тип носителя текст /HTML.

Ответ 2

В отличие от всех остальных, правильный ответ ДА

Спецификация селекторов очень понятна:

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


Edit

Просто для пояснения: Да, элемент XHTML может иметь несколько идентификаторов, например.

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

Ответ 6

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

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

является совершенно законным.

Ответ 7

Нет, вы должны использовать вложенные DIV, если вы хотите пропустить этот путь. Кроме того, даже если бы вы могли представить себе путаницу, возникшую при запуске document.getElementByID(). Какой идентификатор он собирается захватить, если их несколько?

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

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

Ответ 8

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

Ответ 9

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

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

и

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

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

Ответ 10

Нет.

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

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

Ответ 11

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

Ответ 12

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

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

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

Ответ 13

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

Ответ 14

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

<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>

Ответ 15

Най.

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

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

id="ab" <- найти пробел в этом VaLuE.

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

Ответ 16

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