Какие правила существуют для значения при создании атрибутов id для HTML-элементов?
Я заметил, что SharePoint 2010 присваивает такое значение - {8CC7EF38-31D8-4786-8C20-7E6D56E49AE2} - {E60CE5E2-6E64-4350-A 884-654B72DA5A53} для динамически сгенерированной таблицы в веб-части и страницы, содержащей идентификатор. такого рода значение не нарушается ни в одном из популярных браузеров. Однако работать с такими значениями идентификаторов через JavaScript сложно - mvark.blogspot.in/2012/07/…
Требования HTML4 и HTML5 для значений ID сильно различаются. Вот краткое и полное изложение правил HTML5 ID: stackoverflow.com/a/31773673/3597276
Обратите внимание: выполнение того, что сказано в некоторых ответах, и использование точки (**.**) с jQuery вызовет у вас немало проблем, например, использование <input id = "me.name" />, а затем $("#me.name").val() приведет к тому, что jQuery будет искать тег <me> с классом .name , чего на самом деле никто не хочет!
@SamSwift 웃 Нет, вам просто нужно экранировать специальные символы как документы говорят. Пожалуйста, проверьте это онлайн-демонстрация.
Я знаю, что OP спрашивает о создании действительных идентификаторов (а не о том, как выполнить jQuery для существующей DOM), но нижеприведенный комментарий @ Faust будет так полезен для других, которые, возможно, искали в Google это так же, как и я. Используя его технику: я смог успешно запросить такие элементы (с пробелом): <div id = "Usr_order #">..., используя оператор jQuery, подобный этому: $([id='Usr_order #'])
GUID @mvark - это популярно, но я обнаружил, что использование GUID в кодировке base64 еще более актуально. 0dea65ca-eac3-489a-944c-0c522b609f78 компактно представлен как ymXqDcPqmkiUTAxSK2CfeA.






ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Распространенной ошибкой является использование идентификатора, начинающегося с цифры.
Обратите внимание, что HTML5 позволяет гораздо больше, чем HTML4, например 456bereastreet.com/archive/201011/… и w3.org/TR/html5/elements.html#the-id-attribute
IE6 не поддерживает идентификаторы, начинающиеся с подчеркивания, но в любом случае он мертв.
@rahmanisback относительно IE6, можно было бы так подумать, но я сейчас заканчиваю предложение для банка, и они настаивают, чтобы любое приложение, разрабатываемое поставщиком, работало в IE6. Это для 30 000 пользователей. Черт возьми, если бы мы могли просто заставить их обновлять свои браузеры на всех этих настольных компьютерах, это могло бы просто улучшить уровень безработицы.
@ Карл, мне жаль это слышать. Сделайте все возможное, чтобы предупредить о проблемах безопасности IE6. Однако IE7 скоро станет новым IE6, так что да, похоже, наша судьба в этой отрасли - исправить прошлые ошибки MS.
@MrShark Вторая ссылка не работает; Новая ссылка
Строго должно соответствовать
[A-Za-z][-A-Za-z0-9_:.]*
Но у jquery, похоже, есть проблемы с двоеточиями, поэтому их лучше избегать.
Или, как вариант: «так что лучше избегать jquery». ;)
Из спецификации HTML 4 ...
Жетоны ID и NAME должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисами ("-"), подчеркиванием ("_"). , двоеточия (":") и точки (".").
Обновлено: ооо! Опять же, до кнопки!
На практике многие сайты используют атрибуты id, начинающиеся с цифр, хотя технически это недопустимый HTML.
HTML 5 черновик спецификации ослабляет правила для атрибутов id и name: теперь они представляют собой просто непрозрачные строки, которые не могут содержать пробелов.
Кроме того, никогда не забывайте, что идентификатор уникален. После использования значение идентификатора может больше не появляться в документе.
У вас может быть много идентификаторов, но все они должны иметь уникальное значение.
С другой стороны, есть класс-элемент. Как и ID, он может появляться много раз, но значение можно использовать снова и снова.
Технически вы можете использовать двоеточия и точки в атрибутах id / name, но я настоятельно рекомендую избегать обоих.
В CSS (и некоторых библиотеках JavaScript, таких как jQuery) точка и двоеточие имеют особое значение, и вы столкнетесь с проблемами, если не будете осторожны. Точки - это селекторы классов, а двоеточия - псевдоселекторы (например, «: hover» для элемента, когда на него наведена мышь).
Если вы дадите элементу идентификатор «my.cool:thing», ваш селектор CSS будет выглядеть так:
#my.cool:thing { ... /* some rules */ ... }
Что на самом деле означает «элемент с идентификатором« мой », класс« круто »и псевдоселектор« вещь »» на языке CSS.
В любом регистре, числах, знаках подчеркивания и дефисах придерживайтесь А-Я. И, как сказано выше, убедитесь, что ваши идентификаторы уникальны.
Это должно быть вашей первой проблемой.
Вы можете использовать двоеточия и точки, но вам нужно будет экранировать их, используя двойную обратную косую черту, например: $ ('# my \\. Cool \\: thing') или экранирование переменной: $ ('#' + id.replace (/ \ ./, '\\.'). replace (/ \: /, '\\:')) groups.google.com/group/jquery-en/browse_thread/thread/…
Почему не цифры; почему только А-Я? Числа являются очень полезными идентификаторами при обращении к элементам, связанным с данными, содержащими номер, если вы не начинаете с номера.
Просто к вашему сведению, тире находятся технически дефисы. Знак минус отсутствует в наборе символов ASCII. en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
@jowformd: интересная идея с использованием замены в селекторе вместо использования функции дважды, почему бы просто не улучшить регулярное выражение id.replace(/([\.:])/g,"\")
Если у вас есть эти символы (., :) в идентификаторах, и вы не можете их удалить (кашля ... Sharepoint), вы можете обойти это в CSS с помощью селекторов атрибутов вместо селекторов идентификаторов, например [id='my.cool:thing'], однако этот селектор будет иметь более низкую специфичность, чем селектор id, что может вызвать другие проблемы.
Старый, я знаю, но обновленный: теперь в нем добавлены числа и дефисы.
Для HTML 4 технически ответ:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
HTML 5 еще более либерален, говоря только о том, что идентификатор должен содержать хотя бы один символ и не может содержать никаких пробелов.
Атрибут id чувствителен к регистру в XHTML.
Из чисто практических соображений вы можете захотеть избегать определенных символов. Точки, двоеточия и '#' имеют особое значение в селекторах CSS, поэтому вам придется экранировать эти символы, используя обратная косая черта в CSS или двойную обратную косую черту в строка селектора, переданная в jQuery. Подумайте, как часто вам придется экранировать символ в таблицах стилей или коде, прежде чем вы сойдете с ума от точек и двоеточий в идентификаторах.
Например, HTML-декларация <div id = "first.name"></div> действительна. Вы можете выбрать этот элемент в CSS как #first\.name и в jQuery следующим образом: $('#first\.name'). Но если вы забудете обратную косую черту $('#first.name'), у вас будет совершенно допустимый селектор, который ищет элемент с идентификатором first и также имеет класс name. Эту ошибку легко не заметить. Возможно, в конечном итоге вы будете более счастливы, выбрав вместо него идентификатор first-name (дефис, а не точку).
Вы можете упростить задачи разработки, строго придерживаясь соглашения об именах. Например, если вы полностью ограничиваете себя строчными символами и всегда разделяете слова либо дефисами, либо символами подчеркивания (но не обоими сразу, выбирайте одно и никогда не используйте другое), тогда у вас есть легко запоминающийся шаблон. Вы никогда не задаетесь вопросом: "Это был firstName или FirstName?" потому что вы всегда будете знать, что вам следует ввести first_name. Предпочитаете верблюжий футляр? Затем ограничьтесь этим, никаких дефисов или подчеркиваний, и всегда последовательно используйте верхний или нижний регистр для первого символа, не смешивайте их.
Теперь очень неясная проблема заключалась в том, что по крайней мере один браузер, Netscape 6, неправильно обработанные значения атрибута id как чувствительные к регистру. Это означало, что если бы вы набрали id = "firstName" в своем HTML (нижний регистр «f») и #FirstName { color: red } в своем CSS (верхний регистр «F»), этот ошибочный браузер не смог бы установить красный цвет элемента. На момент редактирования, апрель 2015 года, я надеюсь, что вас не просят поддержать Netscape 6. Считайте это исторической сноской.
Обратите внимание, что атрибуты class и id находятся чувствительны к регистру в XHTML, а все остальные атрибуты - нет. Эрик Мейер упомянул об этом на семинаре по CSS, который я посетил.
Также обратите внимание, что если вы попытаетесь написать правило CSS для нацеливания на элемент по идентификатору, а идентификатор будет иметь номер, это не сработает. Облом!
Что касается '.' или ':' в идентификаторе, использующем jQuery, см. jQuery Часто задаваемые вопросы. Он содержит небольшую функцию, которая выполняет необходимое экранирование.
Атрибут id [w3.org/TR/html4/struct/global.html#adef-id visible(case чувствителен в HTML4) и должен начинаться с буквы (от A до Z). Также обратите внимание, что ваш пример не должен делать цвет текста вашего элемента красным, поскольку ваш CSS относится к элементу с классом FirstName, а не к вашему id.
Я только что обновил ответ, включив в него упоминание о более разрешительных правилах HTML 5, и исправил эту ошибку в моем примере CSS. Всем спасибо за комментарии!
Ошибка, на которую указал Август, все еще существует. В вашем примере, если у вас есть id = "firstName" в HTML 4 или HTML 5 и #FirstName { color: red } в CSS, только браузер с ошибками устанавливает красный цвет элемента.
На самом деле идентификаторы в HTML / XML не ограничиваются только буквами ASCII, цифрами, дефисами и символами подчеркивания. Все остальные латинские буквы также действительны (например, "Café" - действительный идентификатор HTML / XML). И на самом деле вы можете использовать буквы любого алфавита любого простого алфавитного письма (например, греческие, кириллические, армянские или грузинские буквы).
Фактически, вы можете использовать буквы любого алфавита любого простого алфавитного письма (например, греческие, кириллические, армянские или грузинские буквы), или слоговые (например, японские кан), или синограммы. Вы также можете включать комбинирующие символы (например, точку на иврите) в свои идентификаторы (но не в качестве их первого символа), а также другие объединяющие символы Unicode (такие как ZWJ и ZWNJ) (только перед другой буквой, но не в начале идентификатор).
Также принимаются цифры для других шрифтов (например, цифры Деванагари). Допускаются также некоторые другие дефисы (например, арабский Кашида). Не допускаются только буквы и цифры, определенные как символы совместимости (например, контекстные варианты и варианты форм). Вы также можете вставить. Прочтите спецификации XML и HTML о том, какие буквенные сценарии являются приемлемыми.
Допустимые символы: ":" | [А-Я] | "_" | [а-я] | [# xC0- # xD6] | [# xD8- # xF6] | [# xF8- # x2FF] | [# x370- # x37D] | [# x37F- # x1FFF] | [# x200C- # x200D] | [# x2070- # x218F] | [# x2C00- # x2FEF] | [# x3001- # xD7FF] | [# xF900- # xFDCF] | [# xFDF0- # xFFFD] | [# x10000- # xEFFFF]
Все эти символы могут встречаться где угодно в продукте «Имя», которому должен подчиняться тип идентификатора. Однако первый символ более ограничен, и следующие дополнительные символы могут встречаться только начиная со второго символа: «-» | "." | [0-9] | # xB7 | [# x0300- # x036F] | [# x203F- # x2040]
Некоторые из этих символов обычно запрещены буквально в селекторах CSS и должны быть экранированы (это случай точки '.'
Это также означает, что также можно использовать многие знаки препинания и символы (например, символ евро «€», U + 20AC, попадает в список символов, разрешенных везде в идентификаторе, поэтому «€» является допустимым идентификатором, но не $ ', который действителен в идентификаторах Javascript, но не в идентификаторах HTML / XML!)
Обратите внимание, что вы также можете использовать ссылки на символы в идентификаторе: "& # x41;" действует так же, как "А". Также обратите внимание, что символы все в дополнительных плоскостях, кроме плоскостей PUA, действительны. Это также означает, что идентификатор '& # x10FFFF;' является допустимым, даже если документ HTML / XML не может быть закодирован как простой текст, если вы замените ссылку на символ его буквальным символом: документ больше не будет простым текстом, потому что он содержит «несимвольный».
Также обратите внимание, что идентификаторы не обязательно должны быть в нормальной канонической форме: даже если два идентификатора канонически эквивалентны (они имеют одинаковую форму NFC), они считаются различающимися. XML и HTML выполняют нет нормализацию имен текстовых элементов, имен атрибутов, идентификаторов, токенов имен, значений атрибутов любого типа и содержимого текстовых элементов.
Вы заметите, что обычное комбинирование символов в диапазоне [# x0300- # x036F] не допускается в начале идентификатора, но разрешено комбинирование символов и элементов управления форматом многих скриптов. Таким образом, идентификатор, состоящий только из комбинированного акцента, недействителен, но идентификатор, состоящий только из комбинированного арабского сукуна, действителен, даже если он не имеет смысла на арабском языке !!!
Наконец, обратите внимание, что эти ограничения были необходимы для совместимости с XHTML, то есть, наконец, с XML. Но в HTML5 совместимость с XML и XHTML не требуется, и фактически HTML5 даже не содержит элементов, требующих использования пространства имен «xml:» или любого другого пространства имен. В HTML5 стандартный атрибут «id» теперь просто непрозрачная строка без каких-либо других ограничений, кроме отсутствия пробелов. Итак, атрибут id = "Хорошего дня!" совершенно корректно в HTML5, но будет недействительным в XHTML из-за неразрывного пробела и кавычек ...
Чтобы селекторы работали в jQuery, для некоторых символов все, что вам нужно сделать, это добавить «\\» (2 косые черты) непосредственно перед проблемным символом. Вот ссылка на escape-функцию для точек и двоеточий в селекторе jquery: learn.jquery.com/using-jquery-core/faq/…, а вот функция function jq( myid ) {return "#" + myid.replace( /(:|\.|\[|\])/g, "\" );}
Есть ли ограничение по длине?
@dgvid, будет ли браузер выдавать ошибку, если синтаксис для атрибута id нарушен?
Каждый браузер может обрабатывать недопустимый идентификатор по-своему. Как правило, браузеры стараются прощать синтаксические ошибки, поэтому недопустимый идентификатор может каким-то образом нарушить работу страницы, но не даст никаких других указаний на ошибку.
ids (you just have to escape them correctly, which is defined in CSS). What "problems" are you talking about?
Имейте в виду, что #3d { background:red; } не будет работать (следовательно, не используйте идентификатор, начинающийся с числа, если вы хотите его стилизовать).
Я предпочитаю first-name.
просто с точки зрения удобства, вы можете выделить текст first_name двойным щелчком, но не first-name
@ 10basetom Вы всегда можете избежать первого символа: d.
Фраза «вам придется экранировать эти символы, используя обратную косую черту в CSS или двойную обратную косую черту в строке селектора, передаваемой в jQuery» выглядит сбивающей с толку. Сначала я подумал, что jquery действительно требует двойной косой черты, но на самом деле это всегда одинарная косая черта. Двойная косая черта в строке JS требуется только потому, что в строках JS косая черта также является escape-символом, поэтому для создания селектора css из строки JS необходимо экранировать косую черту JS, чтобы получить одну косую черту для селектора CSS. console.info('\#') действительно печатает \#.
jQuery делает обрабатывает любое допустимое имя ID. Вам просто нужно экранировать метасимволы (например, точки, точки с запятой, квадратные скобки ...). Это все равно, что сказать, что у JavaScript проблемы с кавычками только потому, что вы не можете писать
var name = 'O'Hara';
Похоже, что хотя двоеточия (:) и точки (.) Допустимы в спецификации HTML, они недействительны как селекторы идентификаторов в CSS, поэтому, вероятно, лучше избегать их, если вы собираетесь использовать их для этой цели.
@MathiasBynens Ссылка не работает. Теперь это mothereff.in/css-escapes#0foo%23bar.baz%3Aqux
Они не являются недействительными, если вы правильно их избегаете. См. mothereff.in/css-escapes#0foo%23bar.baz%3Aqux
Дефисы, подчеркивания, точки, двоеточия, числа и буквы допустимы для использования с CSS и JQuery. Следующее должно работать, но оно должно быть уникальным на всей странице и также должно начинаться с буквы [A-Za-z].
Работа с двоеточиями и точками требует немного больше работы, но вы можете сделать это, как показано в следующем примере.
<html>
<head>
<title>Cake</title>
<style type = "text/css">
#i\.Really\.Like\.Cake {
color: green;
}
#i\:Really\:Like\:Cake {
color: blue;
}
</style>
</head>
<body>
<div id = "i.Really.Like.Cake">Cake</div>
<div id = "testResultPeriod"></div>
<div id = "i:Really:Like:Cake">Cake</div>
<div id = "testResultColon"></div>
<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type = "text/javascript">
$(function() {
var testPeriod = $("#i\.Really\.Like\.Cake");
$("#testResultPeriod").html("found " + testPeriod.length + " result.");
var testColon = $("#i\:Really\:Like\:Cake");
$("#testResultColon").html("found " + testColon.length + " result.");
});
</script>
</body>
</html>
алфавиты-> заглавные и маленькие
цифры-> 0-9
специальные символы-> ':', '-', '_', '.'
формат должен начинаться с "." или алфавит, за которым следует любой из специальных символов других алфавитов или чисел. значение поля id не должно заканчиваться на "_".
Также не допускаются пробелы, если они указаны, они обрабатываются как разные значения, что недопустимо в случае атрибутов id.
избавляется от дополнительных ограничений на атрибут id глянь сюда. Единственные оставшиеся требования (помимо уникальности в документе):
ID должен совпадать:
[A-Za-z][-A-Za-z0-9_:.]*
- (дефис), _ (подчеркивание), : (двоеточие) и . (точка)но следует избегать : и ., потому что:
Например, идентификатор может быть помечен как «ab: c» и обозначен в таблице стилей как #ab: c, но это не только идентификатор элемента, но и идентификатор «a», класс «b», псевдо- селектор «с». Лучше избегать путаницы и держаться подальше от использования. и: все вместе.
# : . * !<base>, <head>, <html>, <meta>, <param>, <script>, <style>, and <title>..«подчеркивание тоже можно использовать, но не подходит для поисковой оптимизации»: С каких это пор поисковые системы проявляют интерес к классам CSS или именам идентификаторов?
для HTML5
The value must be unique amongst all the IDs in the element’s home subtree and must contain at least one character. The value must not contain any space characters.
Хотя бы один символ, без пробелов.
Это открывает двери для допустимых вариантов использования, таких как использование символов с диакритическими знаками. Это также дает нам намного больше боеприпасов, чтобы выстрелить себе в ногу, поскольку теперь вы можете использовать значения id, которые вызовут проблемы как с CSS, так и с JavaScript, если вы не будете очень осторожны.
Помня, что ID должен быть уникальным, т.е. в документе не должно быть нескольких элементов с одинаковым значением id.
Правила относительно содержания ID в HTML5 (помимо уникальности) следующие:
This attribute's value must not contain white spaces. [...]
Though this restriction has been lifted in HTML 5,
an ID should start with a letter for compatibility.
Это спецификация W3 об ID (от MDN):
Any string, with the following restrictions:
must be at least one character long
must not contain any space characters
Previous versions of HTML placed greater restrictions on the content of ID values
(for example, they did not permit ID values to begin with a number).
Чтобы ссылаться на идентификатор с точкой в нем, вам нужно использовать обратную косую черту. Не уверен, что то же самое для дефисов или подчеркиваний. Например: HTML
<div id = "maintenance.instrumentNumber">############0218</div>
CSS
#maintenance\.instrumentNumber{word-wrap:break-word;}
Дефисы и символы подчеркивания обычно не нужно экранировать. Однако исключением является случай, когда дефис появляется в начале идентификатора и сопровождается другим дефисом (например, \--abc) или цифрой (например, \-123).
Начиная с HTML5, единственными ограничениями на значение идентификатора являются:
Аналогичные правила применяются к классам (за исключением, конечно, уникальности).
Таким образом, значение может состоять из всех цифр, только одной цифры, только знаков пунктуации, включая специальные символы, что угодно. Просто без пробелов. Это сильно отличается от HTML4.
В HTML 4 значения идентификатора должны начинаться с буквы, за которой могут следовать только буквы, цифры, дефисы, подчеркивания, двоеточия и точки.
В HTML5 они действительны:
<div id = "999"> ... </div>
<div id = "#%LV-||"> ... </div>
<div id = "____V"> ... </div>
<div id = "⌘⌥"> ... </div>
<div id = "♥"> ... </div>
<div id = "{}"> ... </div>
<div id = "©"> ... </div>
<div id = "♤₩¤☆€~¥"> ... </div>
Просто имейте в виду, что использование цифр, знаков препинания или специальных символов в значении идентификатора может вызвать проблемы в других контекстах (например, CSS, JavaScript, регулярное выражение).
Например, в HTML5 действителен следующий идентификатор:
<div id = "9lions"> ... </div>
Однако в CSS это недопустимо:
Из спецификации CSS2.1:
In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A0 and higher, plus the hyphen (-) and the underscore (_); they cannot start with a digit, two hyphens, or a hyphen followed by a digit.
В большинстве случаев вы можете экранировать символы в контекстах, где они имеют ограничения или особое значение.
Ссылки W3C
HTML5
The
idattribute specifies its element's unique identifier (ID).The value must be unique amongst all the IDs in the element's home subtree and must contain at least one character. The value must not contain any space characters.
Note: There are no other restrictions on what form an ID can take; in particular, IDs can consist of just digits, start with a digit, start with an underscore, consist of just punctuation, etc.
The attribute, if specified, must have a value that is a set of space-separated tokens representing the various classes that the element belongs to.
The classes that an HTML element has assigned to it consists of all the classes returned when the value of the class attribute is split on spaces. (Duplicates are ignored.)
There are no additional restrictions on the tokens authors can use in the class attribute, but authors are encouraged to use values that describe the nature of the content, rather than values that describe the desired presentation of the content.
Уникальный идентификатор элемента.
В документе не должно быть нескольких элементов с одинаковым значением id.
Любая строка со следующими ограничениями:
не должно содержать пробелов:
Использование символов, кроме ASCII letters and digits, '_', '-' and '.', может вызвать проблемы совместимости, поскольку они не разрешены в HTML 4. Хотя это ограничение снято в HTML 5, для совместимости идентификатор должен начинаться с буквы.
Допустимы любые Буквенно-цифровое значение, «-» и «_». Но вы должны начать имя идентификатора с любым символом между А-Я или а-я.
Без пробелов, должно начинаться как минимум с символа от a до z и от 0 до 9.
В HTML
Я БЫ должен начинаться с {А-Я} или {а-я}, вы можете добавить Цифры, точка, дефис, подчеркивание, двоеточия.
Например:
<span id = "testID2"></span>
<span id = "test-ID2"></span>
<span id = "test_ID2"></span>
<span id = "test:ID2"></span>
<span id = "test.ID2"></span>
Но даже если вы можете создать идентификатор с двоеточием (:) или точкой (.) CSS трудно использовать этот идентификатор в качестве селектора. В основном, когда вы хотите использовать псевдоэлементы (: до,: после).
Также в JS трудно выбрать эти ID. Таким образом, вы должны использовать первые четыре идентификатора. Как предпочитают многие разработчики, и, если это необходимо, вы также можете использовать последние два.
значения могут быть: [a-z], [A-Z], [0-9], [* _: -]
он используется для HTML5 ...
мы можем добавить id с любым тегом.
Так как ES2015, мы можем также использовать -почти- все символы юникода для идентификаторов, если кодировка документа установлена на UTF8.
Протестируйте здесь: https://mothereff.in/js-variables
Прочтите о: https://mathiasbynens.be/notes/javascript-identifiers-es6
In ES2015, identifiers must start with $, _, or any symbol with the Unicode derived core property ID_Start.
The rest of the identifier can contain $, _, U+200C zero width non-joiner, U+200D zero width joiner, or any symbol with the Unicode derived core property ID_Continue.
const target = document.querySelector("div").id
console.info(
target
)
document.getElementById(target).style.backgroundColor = "black"div {
border: 1px black solid;
width: 100%;
height: 200px
}<div id = "H̹̙̦̮͉̩̗̗ͧ̇̏̊̾Eͨ͆͒̆ͮ̃͏̷̮̣̫̤̣Cͯ̂͐͏̨̛͔̦̟͈̻O̜͎͍͙͚̬̝̣̽ͮ͐͗̀ͤ̍̀͢M̴̡̲̭͍͇̼̟̯̦̉̒͠Ḛ̛̙̞̪̗ͥͤͩ̾͑̔͐ͅṮ̴̷̷̗̼͍̿̿̓̽͐H̙̙̔̄͜">Стоит ли его использовать? Наверное, не лучшая идея!
Прочтите о: https://stackoverflow.com/a/52799593/2494754
Помогите, мой Javascript сломан!
Все говорят, что идентификаторы не могут быть дублированы.
Лучше всего пробовать во всех браузерах, кроме FireFox.
<div id = "ONE"></div>
<div id = "ONE"></div>
<div id = "ONE"></div>
<script>
document.body.append( document.querySelectorAll("#ONE").length , ' DIVs!')
document.body.append( ' in a ', typeof ONE )
console.info( ONE );
</script>
Это отличается между HTML5 и предыдущими версиями спецификации. Я объяснил это здесь: mathiasbynens.be/notes/html5-id-class