2013-04-19 43 views
-1

我想通過在javascript代碼中設置它們來直接設置jsf塊中定義的列表框元素,但是document.getElementById()返回null?直接從javascript設置JSF列表框

JSF代碼:

<h:panelGroup id="dtEffectiveDate"> 
           <h:outputText value="EffectiveDates:" style="margin-left: 250px;width:76px;"/> 
            <h:selectManyListbox id="effectiveDateListbox" style="margin-left: 15px; width:76px;" size="2"> 
             <c:selectItems id="effectiveDateSelectItems" value="#{manualDataEntryRegText.effectiveDates}"/> 
            </h:selectManyListbox> 
           </h:panelGroup> 

JavaScript代碼:

CalendarPopup.handleSelectForMultipleDates = function(type, args, obj, inputEl) 
    { 
    alert("MultiSelect"); 
    var arrDates = CalendarPopup.effectiveDateCalendar.getSelectedDates(); 
    var length = arrDates.length; 
    var i=0; 
    var tokenizedDates = ""; 

    var txtDate = document.getElementById("pageForm:effectiveDateListbox"); 
    alert(txtDate); // returns null 
    for (i = 0; i!= length; i++) 
    { 
     var date = arrDates[i]; 
     var displayMonth = date.getMonth() + 1; 
     var displayYear = date.getFullYear(); 
     var displayDate = date.getDate(); 
     tokenizedDates = displayMonth.toString(10) + "/" + displayDate.toString(10) + "/" + displayYear.toString(10); 
     effectiveDateListbox.options[i].value = tokenizedDates; 
     i++; 
    } 


    } 

編輯:我能夠獲得列表框,但不能將其設置: 如何設置列表框?

var listBox = document.getElementById('pageForm:effectiveDateListbox'); 
     for (i = 0; i!= length; i++) 
     { 
      var date = arrDates[i]; 
      var displayMonth = date.getMonth() + 1; 
      var displayYear = date.getFullYear(); 
      var displayDate = date.getDate(); 
      tokenizedDates = displayMonth.toString(10) + "/" + displayDate.toString(10) + "/" + displayYear.toString(10); 
      listBox.options[i].value = tokenizedDates; 
      i++; 
     } 
+0

當您查看由JSF呈現的HTML源代碼時,元素的id是否爲? – louisbros

+0

這就是我所看到的 Phoenix

+0

這就是我現在看到的: Phoenix

回答

0

這不應該返回null

<select id="pageForm:effectiveDateListbox" name="pageForm:effectiveDateListbox" multiple="multiple" size="0"></select> 

document.getElementById('pageForm:effectiveDateListbox'); 

如果是,它可能是在select元素不會在你的JavaScript運行時間存在。爲了防止您可以嘗試:

window.onload = function(){ 
    // do stuff here 
};