0

我不知道怎么问这个,但是有没有办法获取当前的本地全年,然后创建一个循环来获取过去 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);
}
4

4 回答 4

2

你很接近,但有两个问题:

1)d.getFullYear应该是d.getFullYear(),否则你没有得到年份,只是参考方法

2)> 18应该是< 18

于 2012-07-24T20:22:11.970 回答
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;
 }
于 2012-07-24T21:19:30.530 回答
0

我建议对引用年份的变量执行数学运算,当您通过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)。

于 2012-07-24T20:19:19.620 回答
0

作为一个函数:

function printYearsBefore(date,num) {
   var yr = parseInt(date.getFullYear()), i =0;
   while(++i <= num){
     document.write((yr-i));
   }
}

printYearsBefore(new Date(),18);
于 2012-07-24T20:22:47.257 回答