Вы спросили "как плохо". Таким образом, чтобы конкретизировать ответ @ RobertKoritnik (полностью точный) немного ...
Этот код неверен. Неправильно не входит в оттенки серого. Этот код нарушает стандарт и поэтому является неправильным. Это провалило бы проверку правильности, и это должно.
Тем не менее, ни один браузер в настоящее время на рынке не будет жаловаться или иметь какие-либо проблемы с ним вообще. Браузеры могут жаловаться на это, но ни одна из текущих версий ни одной из них в настоящее время не делает. Что не означает, что будущие версии могут плохо относиться к этому коду.
Ваше поведение, когда вы пытаетесь использовать этот идентификатор в качестве селектора в CSS или JavaScript, невозможно угадать и, вероятно, варьируется от браузера к браузеру. Я полагаю, можно провести исследование, чтобы увидеть, как каждый браузер реагирует на это. Я думаю, что в лучшем случае это будет восприниматься как «класс =» и выбирать список из них. (Однако это может сбить с толку библиотеки JavaScript - если бы я был автором jQuery, я мог бы оптимизировать мой код селектора, чтобы, если вы пришли ко мне с селектором, начинающимся с «#», я ожидал один объект и получил список может полностью меня лишить.)
Он также может выбрать первый или, возможно, последний, или выбрать ни один из них, или полностью вызвать сбой браузера. Невозможно сказать, не пытаясь это сделать.
«Как плохо» полностью зависит от того, насколько строго конкретный браузер реализует спецификацию HTML и что он делает, когда сталкивается с нарушением этой спецификации.
РЕДАКТИРОВАТЬ: Я просто случайно столкнулся с этим сегодня. Я добавляю различные компоненты из форм поиска на различные типы объектов, чтобы создать большую большую универсальную утилиту для создания отчетов для этого сайта, загружаю формы поиска удаленных страниц в скрытые элементы и делю их на свои Генератор отчетов, когда в качестве источника отчета выбран соответствующий тип объекта. Таким образом, есть скрытая версия формы и версия, отображаемая в генераторе отчетов. JavaScript, который прилагается, во всех случаях относится к элементам по идентификатору, которых на странице теперь двое - скрытый и отображаемый.
Кажется, что jQuery делает то, что выбрал меня ПЕРВЫМ, что во всех случаях именно то, что я НЕ хочу.
Я работаю над этим, написав селекторы, чтобы указать регион страницы, в который я хочу получить свое поле (т. Е. $ ('# ContainerDiv #specificElement')). Но есть один ответ на ваш вопрос - jQuery в Chrome определенно ведет себя определенным образом, когда сталкивается с этим нарушением спецификации.