我要存儲的元素在我的數組和對象爲值的鍵,例如 -
存儲HTML節點作爲數組鍵
var arr = [];
arr[ document.getElementById('something') ] = { data: 'something' , fn : function(){ } };
但問題是:如果我將再增加元素的關鍵是:document.getElementById('otherthing')
。 然後將嘗試獲得值:arr[ document.getElementById('something') ].data
,我會得到值arr[ document.getElementById('otherthing') ]
。
例如:
var arr = [];
arr[ document.getElementById('something') ] = { data: 'something' , fn : function(){ } };
arr[ document.getElementById('otherthing') ] = { data: 'otherthing' , fn : function(){ alert('k'); } };
alert(arr[ document.getElementById('otherthing') ].data); // alerts "otherthing"
alert(arr[ document.getElementById('something') ].data); // alerts "otherthing" but suppose to alert "something"
我怎樣才能解決這個問題,我通過`噸ID存儲,因爲我要支持其他節點沒有-ID
謝謝,Yosy。
編輯:我的答案,如果你有更好的答案請寫吧:)(由casablanca`s啓發接聽)
數組ID:關鍵整數節點ID,值的節點它自
與數據陣列,並與我的身份證的FN鍵,它會看起來像這樣:
var idArray = [],nodeArray = [];
idArray[0] = document.getElementById('hello_ducks');
nodeArray[0] = { data: 'hello ducks!!' , fn : function(){ alert('k'); } };
idArray[1] = document.getElementById('hello');
nodeArray[1] = { data: 'hello' , fn : function(){ } };
var testNode = document.getElementById('hello_ducks'), foundId = -1 /*found id*/;
// Do we have testNode in our array?
for(var i = 0 ; i < idArray.length; i++){
if(idArray[i] === testNode){
foundId = i;
}
}
// Do we found our element?
if(foundId >= 0) {
alert(nodeArray[foundId].data); // "hello ducks!!"
}
如果你想使用jQuery,有一個'.data'方法,這可能是你想要的。 HTTP://api.jquery。com/data/ – 2010-10-04 19:40:20
查看我更新的答案以獲得更簡單的方法。 – casablanca 2010-10-04 20:30:53