2012-06-12 2 views
0

내가 뭘 하려는지 올바른 용어를 사용하고 있는지 확실하지 않습니다.mootools 또는 javascript에서 객체를 동적으로 생성합니다.

Mootools More에는 요소 모음을 트위닝 할 수있는 Fx.Elements 클래스가 있습니다. 클래스의 set 메서드는 객체를 받아들이고 원래 값을 설정할 수 있지만 HTML이 동적으로 생성 될 때 얼마나 많은 요소가 트위닝되어야하는지 잘 모르겠습니다.

var n = $$('.element').length; // 5 
var myObj = {}; 
var value = 0; 
var i; 

for (i = 0; i < n; i++) { 
    myObj = { 
     i: { property : value } 
    }       
} 

console.log(myObj); 

// What I get: 
// Object { i : { property: 0 } } 

// What I would like: 
// Object { 
//  0 : { property : 0 
//  }, 
//  1 : { property : 0 
//  }, 
//  2 : { property : 0 
//  }, 
//  3 : { property : 0 
//  }, 
//  4 : { property : 0 
//  } 
// }   

은, 분명히, 개체 만 5 배의 i 속성을 위 설정하는 :

여기에 내가하고 싶은 것을 내 이론이다. 위쪽으로 반복하려면 i이 필요합니다.

내가 가진 것보다 내가 더 잘 설명했으면 좋겠다.

+1

코드에 글로벌 'i'가 누출되었습니다. – ThiefMaster

+0

감사합니다. 어떻게 수정합니까? – beingalex

+0

'var i' 만 사용하면됩니다. – ThiefMaster

답변

2

개체 리터럴 구문 키를 사용할 때 키는 항상 따옴표없이 문자열로 처리됩니다. 게다가, 매번 객체 전체를 덮어 씁니다.

이 코드는 원하는 것을 수행합니다. 게시 한 예제에 맞지 않는 마지막 루프에서 i = 5을 얻을 것이므로이 코드를 i < n으로 변경했습니다.

for(var i = 0; i < n; i++) { 
    myObj[i] = { 
     property: value 
    } 
} 
+0

훌륭해, 고마워, 잘된거야. :) 나는 전에 이것을 시도하고 단지 배열을 계속 지니고 있다고 확신한다. – beingalex

+0

'myObj = []'는 배열을,'myObj = {}'객체를 제공합니다. – ThiefMaster

+0

Fx.Elements는 객체가 배열이 아니라 인수로 기대합니다. 반복자는 Object.each입니다. Array를 상속하거나 확장 할 때 Array에 대해 작동 할 수는 있지만 작동하지는 않습니다. 예를 들어, Array에는 proto에있는 물건뿐만 아니라'.length' 속성이 있습니다. –

관련 문제