我想一些「私人」的數據與DOM元素相關聯。我沒有將這些數據添加到DOM元素本身(我想避免更改DOM元素),而是將一個單獨的數據對象作爲地圖使用。使用DOM元素鍵的JavaScript地圖
不是:
document.GetElementById('someElementId').privateData = {};
我想做
internalPrivateDataMap[document.GetElementById('someElementId')].privateData = {};
並不是所有的元素都有一個ID字段,還有一些是動態創建的,所以我不能使用id作爲鍵。
對大多數元素來說,這很好,但對於「a」元素,被使用的關鍵似乎是元素的href,我認爲是因爲DOM爲元素定義了toString()函數。
這樣做的結果是,如果我有兩個「一」與同HREF,他們正在共享privateData,這是我不希望的元素。
我目前的解決方法是產生內部UNIQUEID我可以作爲一個按鍵使用,但需要我來修改DOM元素,而我試圖避免的。
什麼是你的問題? – Madbreaks
*「這對大多數元素都適用」*它的確如此?我想你會以這種方式得到一個通用鍵'[object HTMLDivElement]'。 ...但是,是的,一個錨會將'href'作爲'.toString()'的值。 –
您必須等待* ES.Next *。 * WeakMaps *將允許。 – jAndy