Показать сообщение отдельно
  #10 (permalink)  
Старый 28.05.2019, 20:57
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от laimas
И какой смысл в таком атрибуте и селекторе, если он используется на 50%?
<span value="user">1</span>
У представителя типа Element имеется свойство attributes, геттер, который возвращает объект типа NamedNodeMap, в котором хранятся представленные атрибуты элемента. Хотя согласно спецификации такой атрибут ничего не значит, у него нет никакого значения, и реализация элемента в классе HTMLSpanElement никак его не использует, однако атрибут представлен в DOM, и соответственно должен быть отражён в объекте свойства attributes.

Зато вы можете наследовать от HTMLSpanElement, и можете дать смысл такому атрибуту. Вы могли бы использовать атрибут вида data-*, если вам не нужно расширение: в таком случае видно, что это ваш собственный атрибут, и читатели вашего кода не полезут в документацию, чтобы узнать о новом атрибуте!

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

Для того, чтобы прочитать конкретный атрибут, также можно воспользоваться методом Element.prototype.getAttribute

Почему у элемента типа HTMLInputElement есть геттер/сеттер value? Потому что так определён класс. Геттер/сеттер value делает дополнительные проверки, которые позволяют значение получаемого/устанавливаемого атрибута привести к соответствующему типу. А метод getAttribute прочитает значение из DOM так, как оно определено.

Последний раз редактировалось Malleys, 28.05.2019 в 21:00.
Ответить с цитированием