1

我有单选按钮控件,并且从我的 Javascript 中,我试图通过 javascript 获取单选输入数组getElementsByName()

第一个警报:alert(radioTitleDisplay);

返回[object HTMLCollection]

然而,第二个警报不会触发。和 Firebug 报告

radioTitleDisplay.options is null.

如何访问单选按钮。我错过了什么吗?(我可以将 id 分配给从 root 到 childs 的每个标签,但我不想这样做,因为如果我更改结构,我也必须更改 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>

渲染的visualforce页面,输入标签之一是:

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

1 回答 1

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);
    }
于 2011-04-20T16:23:40.950 回答