Сообщение от laimas
|
И какой смысл в таком атрибуте и селекторе, если он используется на 50%?
|
<span value="user">1</span>
У представителя типа
Element имеется свойство
attributes, геттер, который возвращает объект типа
NamedNodeMap, в котором хранятся представленные атрибуты элемента. Хотя согласно спецификации такой атрибут ничего не значит, у него нет никакого значения, и реализация элемента в классе
HTMLSpanElement никак его не использует, однако атрибут представлен в
DOM, и соответственно должен быть отражён в объекте свойства
attributes.
Зато вы можете наследовать от
HTMLSpanElement, и можете дать смысл такому атрибуту. Вы могли бы использовать атрибут вида
data-*, если вам не нужно расширение: в таком случае видно, что это ваш собственный атрибут, и читатели вашего кода не полезут в документацию, чтобы узнать о новом атрибуте!
Также вы могли бы создать элемент в пространстве
XML, в таком случае вы сами определяете имена и атрибуты и их значение и семантику.
Для того, чтобы прочитать конкретный атрибут, также можно воспользоваться методом
Element.prototype.getAttribute
Почему у элемента типа
HTMLInputElement есть геттер/сеттер
value? Потому что так определён класс. Геттер/сеттер
value делает дополнительные проверки, которые позволяют значение получаемого/устанавливаемого атрибута привести к соответствующему типу. А метод
getAttribute прочитает значение из
DOM так, как оно определено.