Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JavaScript设置列表框的元素_Javascript - Fatal编程技术网

通过JavaScript设置列表框的元素

通过JavaScript设置列表框的元素,javascript,Javascript,如何设置为我生成的listbox jsf的各个元素?我想通过JS设置它 HTML generated: <select id="pageForm:effectiveDateListbox" name="pageForm:effectiveDateListbox" multiple="multiple" size="0"></select> var listBox = document.getElementById('pageForm:effectiveDateLi

如何设置为我生成的listbox jsf的各个元素?我想通过JS设置它

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

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++;
            }
HTML生成:
var listBox=document.getElementById('pageForm:effectiveDateListbox');
for(i=0;i!=长度;i++)
{
var日期=截止日期[i];
var displayMonth=date.getMonth()+1;
var displayYear=date.getFullYear();
var displayDate=date.getDate();
tokenizedDates=displayMonth.toString(10)+“/”+displayDate.toString(10)+“/”+displayYear.toString(10);
选项[i].value=tokenizedDates;
i++;
}

循环中的长度应为arrDates.length

不要加倍增加i

使用var声明i和tokenizedDates,否则会污染全局命名空间

以下是执行dom操作的链接:

以下是如何使用jquery,因为dom操作很难让它们跨浏览器工作:


循环结束时不需要
i++
,因为循环本身会增加它。
var listBox = document.getElementById('pageForm:effectiveDateListbox');
var dates = [new Date(2013,01,01), new Date(2013,02,03), new Date(2013,03,03)];    
for (i = 0; i != dates.length; i++) {
    var option = document.createElement("option");
    var optionText = [dates[i].getMonth() + 1, dates[i].getDate(), dates[i].getFullYear()];
    option.text = optionText.join("/");
    listBox.add(option, null);
}