2013-10-31 67 views

回答

1

的代碼嘗試使用數組一樣的關聯數組的數組。

當使用語法pos['div1']['left']時,解釋器需要擁有div1屬性的對象,該屬性具有左屬性。這與嚴格使用整數索引的正常數組完全不同。普通數組不允許使用Strings來訪問數組的元素。

另一方面,關聯數組或對象提供了這種靈活性。它們還允許將對象嵌套在對象中。我相信這個數據結構將更好地適合您的需要:

//Initial Object 
var pos={}; 
//assign an object with a left property to the property div1 on the pos object 
pos.div1 = {left:200}; 
pos.div2 = {left:400}; 
pos.div3 = {left:600}; 

alert(pos.div1.left); 

//This data structure could be declared as one object literal upfront 
var pos2 = { 
    div1: { 
     left: 200 
    }, 
    div2: { 
     left: 400 
    }, 
    div3: { 
     left: 600 
    } 
}; 

alert(pos.div2.left); 
//You could also make an array of objects for easier iteration 
var pos3 = [ 
{ 
    name: "div1", 
    left: 200 
},{ 
    name: "div2", 
    left: 400 
},{ 
    name: "div3", 
    left: 600 
} 
]; 

alert(pos3[2].name); 

JS小提琴:http://jsfiddle.net/u9QXs/

+0

謝謝弟弟,節省了我的時間 –

+0

@deepu很高興能幫到你。 –

1

你問這個場景是不是看上去像一個multi-dimensional陣列,
但你仍然可以實現你的需求改變你的代碼,這樣

var pos= {'div1' : 
       {'left' : 200}, 
      'div2' : 
       {'left' : 400} 
      . 
      . 
      . 
     }; 

,您可以通過訪問它,

alert(pos.div1.left) //200