-1

JavaScriptコードで設定することにより、jsfブロックで定義されたリストボックス要素を直接設定したいのですが、document.getElementById()はnullを返しますか?

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++;
        }
4

1 に答える 1

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
};
于 2013-04-19T04:45:06.043 に答える