我建议对引用年份的变量执行数学运算,当您通过for
循环递增(或递减)时,只需将递增变量(i
在本例中)添加或删除保存年份的变量:
function addYears(el, num) {
if (!el) {
return false;
}
else {
for (var i=0; i < num; i++) {
var opt = document.createElement('option'),
year = new Date().getFullYear() - i;
opt.value = year;
opt.textContent = year;
el.appendChild(opt);
}
}
}
addYears(document.getElementById('years'), 18);
JS Fiddle 概念证明。
在您的代码摘录中,我建议将内容修改为:
function allYears(){
var d = new Date();
var y = d.getFullYear();
var years = '';
for(var i=0; i<18; i++){
years += '<option value="'+ (y - i) +'">'+ (y - i) +'</option>';
}
return(years);
}
其中,随着循环的进行,应该返回的option
元素的年份值逐渐早于y
.
此外,循环中的中间条件是for
循环必须为真才能继续进行的评估(当它停止为真时是循环退出时),所以它应该是i < 18
(因为i
开始等于0
)。