我不确定如何问这个问题,但有没有办法让当前的本地全年,然后创建一个循环来过去18年并将它们打印到屏幕上?
这是我尝试过的......
function allYears(){
var d = new Date();
var y = d.getFullYear();
var years = '';
for(var i=0; i>18; i++){
years += '<option value="'+y+'">'+y+'</option>';
y = y-1;
}
return(years);
}
答案 0 :(得分:2)
你很接近,但有两个问题:
1)d.getFullYear
应该是d.getFullYear()
,否则你没有得到年份,只是参考方法
2)> 18
应为< 18
答案 1 :(得分:1)
摆弄工作示例:http://jsfiddle.net/aMFpw/6/
你与原来的实施非常接近。
Javascript:
function getYears(num){
var d = new Date();
var y = parseInt(d.getFullYear());
var years = "";
//need to add one to our number based on our loop index.
num++;
for(var i=0; i<num; i++){
years += '<option value="' + y + '">' + y + '</option>';
y--;
}
return years;
}
答案 2 :(得分:0)
我建议对引用年份的变量执行数学运算,当你通过for
循环递增(或递减)时,只需添加或删除递增变量(i
in这种情况)来自或来自持有年份的变量:
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);
在您的代码摘录中,我建议修改内容:
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
循环中的中间条件是必须为循环才能继续的评估(当循环退出时它停止为真),因此应该 be i < 18
(因为i
开始等于0
)。
答案 3 :(得分:0)
作为一项功能:
function printYearsBefore(date,num) {
var yr = parseInt(date.getFullYear()), i =0;
while(++i <= num){
document.write((yr-i));
}
}
printYearsBefore(new Date(),18);