如何使用javascript按名称为多个下拉菜单添加年份?

时间:2016-05-23 19:30:15

标签: javascript html

这里是一个jfiddle:http://jsfiddle.net/qHSWK/247/和我找到的代码,但最初是由id。我有多个具有相同内容的下拉菜单,因此最好一次按名称进行操作。使用javascript并不是很好,但我认为它会以这种方式工作。这里有什么问题?

<form id="someform">
<select name="year"></select>
</form>

var myselect = document.getElementsByName("year"),
startYear = new Date().getFullYear()
count = 5;

(function(select, val, count) {
 do {
select.add(new Option(val++, count--), null);
} while (count);
})(myselect, startYear, count);

最终有多个下拉:

var myselect = document.getElementsByName("year"),
startYear = new Date().getFullYear()
count = 45;

for (var n = 0; n<5;n++){ 
(function(select, val, count) {
do {
select.add(new Option(val--, count--), null);

} while (count);
})(myselect[n], startYear, count);


}

2 个答案:

答案 0 :(得分:2)

getElementsByName返回NodeList,而不是单个元素。这就是为什么你需要将所需的索引“ [0] ”添加到循环内的“select”var中。这样:

select[0].add(new Option(val++, count--), null);

答案 1 :(得分:1)

将此应用于多个select元素,如下例所示。

&#13;
&#13;
var myselect = document.querySelectorAll("[name=year],[name=year1],[name=year2]"),
    startYear = new Date().getFullYear(),
    count = 5;
for(i=0;i<myselect.length;i++) {
(function(select, val, count) {
  do {
    select.add(new Option(val++, count--), null);
  } while (count);
})(myselect[i], startYear, count);
}
&#13;
<form id="someform">
  <select name="year"></select>
  <select name="year1"></select>
  <select name="year2"></select>
</form>
&#13;
&#13;
&#13;