0

I'm not sure how to ask this, but is there a way to get the current local full year and then create a loop to get the last 18 years and print them to the screen?

Here is what I've tried...

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

あなたは近くにいますが、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

関数として:

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 に答える
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 < 18i0

于 2012-07-24T20:19:19.620 に答える