1

私はラジオボタンコントロールを持っており、私のJavascriptから、JavaScriptを介してラジオ入力の配列を取得しようとしていますgetElementsByName()

最初のアラート:alert(radioTitleDisplay);

戻り値[object HTMLCollection]

ただし、2 番目のアラートは発生しません。そして、Firebug レポート

radioTitleDisplay.options is null.

ラジオボタンにアクセスするにはどうすればよいですか。何か不足していますか?(root から childs までの各タグに id を割り当てることもできますが、構造を変更すると id も変更する必要があるため、これはやりたくありません。これは rubust ではありません。)

<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>

入力タグの 1 つであるレンダリングされた visualforce ページは次のとおりです。

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

1 に答える 1

1

私の提案は、jQuery を使用することです。特に反復リストやその他のリストを掘り下げるのに非常に役立ちます。

ここで行ったことは、入力 html オブジェクトのリストを取得することです。そのリストには options プロパティがありません。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);
    }
于 2011-04-20T16:23:40.950 に答える