2011-04-20 5 views
1

내가 라디오 버튼 컨트롤이 내 자바 스크립트에서, 내가 자바 스크립트 getElementsByName()visualforce selectRadio --- Javascript를 통해 참조를 얻는 방법?

를 통해 무선 입력의 배열을 얻으려고 첫 번째 경고 : alert(radioTitleDisplay);

반환 [object HTMLCollection]

두 번째 경고를하지만, 해고하지 않는다. Firebug 보고서

라디오 버튼에 액세스하려면 어떻게해야합니까? 내가 놓친 게 있니? (나는 차일 루트에서 각 태그에 ID를 할당 할 수 있지만, 나는 구조를 변경하는 경우부터, 내가 rubust하지 않은 너무 ID를 변경해야 그렇게하고 싶지 않아요.)

<apex:form > 
    <apex:selectRadio value="{!titleDisplay}" id="titleDisplayRadio"> 
     <apex:selectOption itemValue="0" itemLabel="one" /> 
     <apex:selectOption itemValue="1" itemLabel="two" /> 
     <apex:selectOption itemValue="2" itemLabel="three" /> 

     <script type="text/javascript"> 

      var radioTitleDisplay = document.getElementsByName('{!$Component.titleDisplayRadio}'); 

      alert(radioTitleDisplay); 
      alert(radioTitleDisplay.options);          
     </script> 
    </apex:selectRadio> 
</apex:form> 

은 렌더링 visualforce 페이지 중 하나는 입력 태그입니다 :

<input type="radio" value="2" id="thePage:j_id27:titleDisplayRadio:2" 
name="thePage:j_id27:titleDisplayRadio"> 

답변

1

내 제안은 jQuery를 사용하는 것입니다. 엄청난 도움을줍니다. 특히 반복 목록 및 다른 목록을 통해 파헤 치기에 좋습니다.

여기서 한 것은 입력 HTML 개체 목록을 가져오고 그 목록에는 옵션 속성이 없습니다. HTML DOM 라디오 버튼의 연결이 끊어지면 모든 것을 보유하는 중앙 객체가 없습니다.

편집 : 예를 들어,이 코드의 의지는 당신에게 선택된 라디오 버튼 경고 :

var myradios = document.getElementsByName('{!$Component.myRadio}'); 
for(i = 0; i < myradios.length; i++) 
    if(myradios[i].checked) { 
     // now we now the selected index 
     alert('Selected value is: ' + myradios[i].value); 
    } 
+0

동의를하지만, 문제는 동적으로 $ 구성 요소의 사용 생성되는 같아요 그래서 SF는 요소의 ID를 수정하는 것입니다 접근법은 위에서 설명한 것처럼 나를 위해 작동하지 않는 것 같습니다. 단순한 변수라면 요소에 대한 참조를 얻을 수 있습니다. 위와 같은 배열의 경우에는 참조를 얻는 방법을 실제로 파악할 수 없습니다. –

+0

예, 그렇지만 $ Component 출력에 반영됩니다. 모든 것이 여러분의 코드에서 괜찮은 것입니다. 요소가 단일 DOM 객체가 아니라는 사실을 깨달을 필요가 있습니다. 항상 컬렉션을 얻을 수 있습니다. JS에서 수행하려는 모든 작업은 컬렉션 요소, 즉 html dom의 작동 방식, salesforce와는 관계가 없습니다. – mmix

+0

통찰력에 감사드립니다. 샘플 코드를 제공 할 수 있습니까? 내 접근 방식이 작동하지 않는 이유는 아직 명확하지 않습니다. –

관련 문제