Можно ли добавить произвольные свойства к объектам DOM JavaScript, таким как элементы <INPUT>
или <SELECT>
? Или, если я не могу этого сделать, существует ли способ связать мои собственные объекты с элементами страницы с помощью ссылочного свойства?
Могу ли я добавлять произвольные свойства к объектам DOM?
Ответ 1
Конечно, люди делали это целую вечность. Это не рекомендуется, поскольку это беспорядочно, и вы можете испортить существующие свойства.
Если вы используете код цикла с for..in
, ваш код может сломаться, потому что теперь вы будете перечислять эти вновь прикрепленные свойства.
Я предлагаю использовать что-то вроде jQuery .data
, которое сохраняет метаданные, прикрепленные к объектам. Если вы не хотите использовать библиотеку, повторно выполните jQuery.data
Ответ 2
Да, вы можете добавить свои собственные свойства к объектам DOM, но не забудьте позаботиться об именовании столкновений и круговых ссылках.
document.getElementById("myElement").myProperty = "my value";
В HTML5 введен правильный способ привязки данных к элементам через разметку - с использованием префикса атрибута data-
. Вы также можете использовать этот метод в документах HTML 4 без проблем, но они не будут проверять:
<div id="myElement" data-myproperty="my value"></div>
Для чего вы можете получить доступ через JavaScript с помощью getAttribute()
:
document.getElementById("myElement").getAttribute("data-myproperty");
Ответ 3
В случае, если кому-то интересно в 2015 году, да, вы можете - и jQuery делает именно это в data. Просто выберите будущие имена, такие как префиксы поставщиков или случайные суффиксы, основанные на времени (jQuery).
Ответ 4
Вы хотите добавить свойства к объекту или атрибуты элемента?
Вы можете добавлять атрибуты с помощью setAttribute
var el = document.getElementById('myelement');
el.setAttribute('custom', 'value');
или вы можете просто добавить свойства к объекту javascript:
var el = document.getElementById('myelement');
el.myProperty = 'myValue';
Ответ 5
Если вам нужно, не используйте стандартные атрибуты HTML. Вот учебник по использованию пользовательских атрибутов:
http://www.javascriptkit.com/dhtmltutors/customattributes.shtml
Это HTML5, но он обратно совместим.