1
我有單選按鈕控制,並從我的JavaScript,我想通過javascript getElementsByName()
visualforce selectRadio ---如何通過Javascript獲取參考?
獲得無線電輸入數組的第一個警報:alert(radioTitleDisplay);
回報[object HTMLCollection]
第二個警告,不開火。和Firebug報告
radioTitleDisplay.options is null.
我該如何訪問單選按鈕。我錯過了什麼嗎? (我可以給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>
渲染輸入標籤之一是:
<input type="radio" value="2" id="thePage:j_id27:titleDisplayRadio:2"
name="thePage:j_id27:titleDisplayRadio">
我同意,但問題是,SF修改元素的ID,這樣就好像被動態和使用$組件的產生方法似乎不適合我如上所述。如果它只是簡單的變量,我可以得到元素的引用。在像上面這樣的數組的情況下,我無法真正知道如何獲取參考。 – 2011-04-21 01:41:26
是的,它確實存在,但反映在$ Component輸出中。你的代碼一切正常,你只需要認識到一組元素不是一個單一的DOM對象,你總是會得到一個集合。您希望在JS中執行的任何操作都必須通過收集元素完成,它是如何運行的,與salesforce無關。 – mmix 2011-04-21 19:29:09
感謝您的洞察力。你能提供示例代碼嗎?我仍然不清楚爲什麼我的方法不起作用。 – 2011-04-22 06:41:17