javascript:如何循环访问日期对象

时间:2012-07-24 20:16:15

标签: javascript jquery

我不确定如何问这个问题,但有没有办法让当前的本地全年,然后创建一个循环来过去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 个答案:

答案 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);​

JS Fiddle proof of concept

在您的代码摘录中,我建议修改内容:

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);