Хранение узла HTML как ключа в * объекте * - PullRequest
1 голос
/ 02 июня 2011

Как и в этом вопросе , я хотел бы использовать узлы HTML в качестве ключей в объекте (не массиве).

Пример:

var _hotspots = {
                 [object HTMLDivElement] : { someProps:[1,2,3] },
                 [object HTMLDivElement] : { someProps:[1,2,3] }
                }

и поэтому я мог бы достичь таких вещей:

for( var a in _hotspots ){
    if(YAHOO.lang.hasOwnProperty(_hotspots, a)){
    alert('key nodeName: '+a.nodeName);
    }
}

До сих пор, когда я предупреждаю 'a' выше, он предупреждает, что это на самом деле [объект HTMLDivElement],так что все выглядело нормально - но я не могу получить доступ к свойствам на «а», как nodeName.

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

ура.

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

Ключи объектов JavaScript всегда символьны.Вы можете сохранить идентификатор в качестве ключа, а затем получить элемент в вашей функции.

1 голос
/ 02 июня 2011

Вы можете использовать мою собственную jshashtable , которая принимает любой объект в качестве ключа, но если для вас не проблема дать всем вашим элементам id, тогда я бы рекомендовал использовать объект с элементомИдентификаторы в качестве ключей, поскольку это будет самое простое и наиболее эффективное решение.

...