2012-01-01 2 views
4

Хотел бы сохранить карту/хэш объектов DOM. Могут ли они служить ключевыми объектами? Если нет, то какие альтернативы, пожалуйста? Если есть лучшие способы - любезно зачислите их.Может ли объект DOM быть индексом/ключом в массиве Javascript?

+1

Извините, но что? Не могли бы вы объяснить, что вы хотите знать, или ... как использовать вывод, если то, что вы хотите, возможно? –

+1

Вместо ключа массива '[]', я думаю, вы имеете в виду свойство объекта '{}'. Массивы JavaScript индексируются численно, в то время как литералы объектов имеют свойства строки, но иногда используют синтаксис 'object [" propertyname "]' вместо 'object.propertyname' –

+0

Мы не можем предложить альтернативы, пока не узнаем, что вы пытаетесь сделать. –

ответ

6

Вы можете поместить что-либо в качестве ключа, но перед фактическим использованием оно всегда преобразуется в строку, и эта строка используется как ключ. Итак, если вы посмотрите, что производит domObject.toString(), вы видите, что это не очень хороший кандидат. Если все ваши объекты dom имеют идентификатор, вы можете использовать этот идентификатор. Если нет, и вам по-прежнему нужен ключ на основе объекта DOM, вы, вероятно, могли бы использовать, например, атрибут _counter с автоматическим счетчиком в фоновом режиме, добавляя новое уникальное значение в объект DOM, если _counter еще не существует.

+4

Не изобретайте пользовательские атрибуты. Для этого случая есть специальный префикс '' data-'(http://www.w3.org/TR/html5/elements.html#embedding-custom-non-visible-data-with-the-data-attributes) , – katspaugh

0

Нет, но вы можете установить атрибут в элементе DOM, который содержит число, которое вы бы указали как индекс в массиве с числовой индексацией.

1

window уже поддерживает все объекты DOM в качестве свойств. Вместо того, чтобы поместить свои собственные ключи для каждого объекта DOM, попробуйте использовать объект окна или документа и методы, которые используют индекс, основанный на макете дерева DOM.

+0

Вы не можете предположить, что макет DOM должен сохраняться между поиском. – katspaugh

+0

@katspaugh действительная точка. –

0

Нет, поскольку объектные ключи являются строками.

Вам придется «сериализовать» свои объекты на id или что-то еще, а затем выполнить поиск позже. Наверное, этого не стоит, в зависимости от вашей фактической цели.

-2

Неточно. Но я думаю, вы хотите что-то вроде ниже. Вы можете делать с jquery,

Метод .serializeArray() создает массив объектов JavaScript, готовый к кодированию как строка JSON. Он работает с объектом jQuery, представляющим набор элементов формы. Эти элементы формы могут быть нескольких типов

см ниже ссылке: http://api.jquery.com/serializeArray/

+0

-1 Это не имеет никакого отношения к вопросу – naugtur

0

Проще всего установить атрибут данных-на элементе вместо этого.

Смежные вопросы