2009-12-07 5 views
0

일부 복잡한 XML을 구문 분석하는 스크립트가 있습니다. XML 요소가 특정 유형 인 경우 XML 요소의 하위 항목을 사용하여 combobox를 생성하여 상자에 채 웁니다. 그런 다음 정답 (XML 파일에 저장된 정보이기도 함)에 대해 생성 된 모든 ComboBox의 값을 모두 확인하려고합니다. ComboBox를 만들 때 "id"속성을 추가했습니다. 그러나, 나는 그들이 사용할 수없는 것 같습니다 :동적으로 ComboBox 이름을 생성합니다.

dynamicQuestion.id.selectedItem.labelField 

답변을 확인하십시오. 그러나 ComboBox를 만드는 데 사용 된 변수 이름을 알고있는 경우 labelField를 가져올 수 있습니다.

dynamicQuestion.selectedItem.labelField 

이것은 ComboBox의 새 인스턴스를 생성 할 때 변수 이름을 동적으로 생성해야한다는 것을 나타냅니다. 하지만 변수 이름을 어떻게 동적으로 생성합니까? 내가 사용하는 경우

var thisBox:String = "box"+boxCount; 
var newBox:ComboBox = thisBox as ComboBox; 

나는 암시 적 강제 변환 오류가 발생합니다. 또한 "thisBox"라는 인수를 허용하는 함수로 creation 문을 변경해 보았습니다. 그러나이 중 하나도 작동하지 않았습니다. 개념적으로 이것은 매우 단순 해 보이지만 실제로 연습하기가 어렵습니다. comboBox의 ID는 스크립트 (예 : var thisBox)를 사용하여 상자를 생성하여 생성 한 것입니다. 이 이름을 어떻게 동적으로 생성합니까?

답변

1

스테판이 제안한대로 배열을 사용하십시오. 문자열 식별자를 사용해야하는 경우 객체를 만들어 연관 배열로 사용할 수 있습니다.

var combos:Object = {}; 

var boxCount:Number = 1; 
var thisBox:String = "box"+boxCount; 
//you can store comboboxes in the object using the following syntax 
combos[thisBox] = new ComboBox(); 
//or 
combos.box2 = new ComboBox(); 
//or 
combos["box3"] = new ComboBox(); 

trace(combos.box1.selectedItem.labelField); 
trace(combos.box2.selectedItem.labelField); 
trace(combos.box3.selectedItem.labelField); 
+0

아마르 그쉬, 이것은 정확히 내가하려는 것입니다. 그때까지는 다른 솔루션을 사용하게되었습니다. 우리는 생성 된 각 ComboBox에 이름 속성을 설정하고 getElementByName을 사용하여 정보에 액세스했습니다. – staypuffinpc

+0

당신이'getChildByName'에 대해 말하는 것으로 가정한다면, 중복 된 이름이 없는지 확인하십시오. 이 메서드는 중복이있는 경우 가장 많이 반환하는 메서드 일 것입니다.이 메서드는 원하는 것일 수도 있고 아닐 수도 있습니다. – Amarghosh

0

왜 동적으로 생성 된 모든 콤보 상자를 배열에 저장하지 않습니까? 그것들을 평가하기를 원하면 배열을 반복하고 selectedItem.labelField에 액세스하십시오.

관련 문제