Подтвердить что ты не робот

Могу ли я добавлять произвольные свойства к объектам DOM?

Можно ли добавить произвольные свойства к объектам DOM JavaScript, таким как элементы <INPUT> или <SELECT>? Или, если я не могу этого сделать, существует ли способ связать мои собственные объекты с элементами страницы с помощью ссылочного свойства?

4b9b3361

Ответ 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, но он обратно совместим.