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

#html #standards #web-standards

#HTML #стандарты #веб-стандарты

Вопрос:

Работаю над проектом, почти закончил и просто убираю HTML, и я узнаю, что на самом деле вам не разрешено иметь идентификатор, который является просто числом-

атрибут <a> «id» имеет недопустимое значение «567» Идентификатор атрибута имеет тип ID. Как описано выше, оно должно начинаться с буквы и не содержать пробелов

 Good    <a id="567" href="/index.html">
Good    <a id="n567" href="/index.html">
  

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

Есть ли причина, по которой я не должен использовать числа в качестве идентификаторов?

Комментарии:

1. Эти ответы напоминают мне родительское воспитание: «Но почему я не могу …?» «потому что я так СКАЗАЛ

Ответ №1:

Это именно то, что говорится в спецификации.

Из спецификации HTML 4:

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

Хорошей новостью является то, что спецификация HTML 5 более мягкая:

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

Комментарии:

1. Впервые HTML5 пригодился мне! По-прежнему нет реальной причины, по которой HTML4 это не нравится, но я рад, что не делаю ничего плохого.

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

Ответ №2:

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

Потому что это то, что диктует спецификация HTML4.


С другой стороны, спецификация HTML5 устранила это требование.