web-dev-qa-db-ja.com

jqueryを使用して現在の月と日付を取得する

月と年を保持する2つのドロップダウンリストがあります...

$(document).ready(function () {               
     $('#Months option:eq(' + (new Date).getMonth() + ')').prop('selected', true);
      alert((new Date).getMonth());        
     $('#Years option:eq(' + (new Date).getFullYear() + ')').prop('selected', true);
      alert((new Date).getFullYear());
});

プログラムを実行するときに選択した値が現在の月と年になるように、上記のようにJQueryスクリプトを記述しました。

しかし、プログラムを実行すると、アラートによって7と2012が表示されます。しかし、私の見解では、現在の月が選択されていますが、現在の年はなぜですか?そして、ドロップダウンで現在の年を選択するにはどうすればよいですか?

13
Suraj Shrestha

jQuery

var d = new Date(),

    n = d.getMonth(),

    y = d.getFullYear();

$('#months option:eq('+n+')').prop('selected', true);

$('#years option[value="'+y+'"]').prop('selected', true);

[〜#〜] html [〜#〜]

​<select id="months">
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
</select>
<select id="years">
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
</select>

[〜#〜] demo [〜#〜]

25
snuffn

月は0(1月)から11(12月)までの整数として返されます。次を参照してください http://www.Java2s.com/Tutorial/JavaScript/0240__Date/DategetMonth.htm

したがって、現在の月(8月)は7を返します。通常の月のインデックス(1〜12)と一致させるには、_((new Date()).getMonth() + 1)_を使用します。

コメントで指摘されたように、私は問題を誤解しました。月のゼロベースの配列とjqueryセレクター:eq()もゼロベースであるため、月は正しいです。

ただし、他の回答で指摘されているように、返される年は、jqueryセレクターのn番目の要素と一致する:eq()と一致しません。推奨されるoption[value=' + (new Date).getFullYear() + ')'を使用することをお勧めします。

2
jussinen

JQueryのセレクターの:eq(N)部分は、一致するセット(その時点では_#Years option_)のN番目の要素(0番目を含む)を選択します。したがって、Yearsドロップダウンに2012を超えるオプションがない限り、これは機能しません。

その値に基づいてオプションを選択することをお勧めします:_option[value=2012]_または

$("#Years").val(2012)を使用するだけで、コードが読みやすくなり、コードが少なくなります。

1
lqc