0

このコードを本から入手しましたが、このステートメント「mm=months[mm]」がどのように月名文字列に変換されるのかわかりません。

function init(){
    var panel = document.getElementById("panel");

    var days=["sun","mon","tue","wed","thur","fri","sat"];
    var months=["jan","feb","mar","apr","may","jun",
    "jul","aug","sep","oct","nov","dec"];

    var now = new Date();

    var yy = now.getFullYear();
    var mm = now.getMonth();
    var dd = now.getDate();
    var dy = now.getDay();

    mm=months[mm];  //convert to month name string
    dy=days[dy];  //convert to month name string

    var str = dy+","+mm","+dd+","+yy;
    panel.innerHTML+="us date string: "+str;
    str = dy+","+dd+" "+mm+","+yy;
    panel.innerHTML+="<br>uk date string: "+str;
}
window.onload=init();

私の質問は、mm=months[mm]and dy=days[dy](月または日の名前の文字列に変換) が正確に何をするかです。month が配列の場合、このステートメント "mm=months[mm]" がどのように月名文字列に変換されるのかわかりません。これは、配列の機能に組み込まれているだけですか?

4

5 に答える 5

2

mmはステートメントの先頭にある数値であるため、文字列である配列の th 値をmm=months[mm]返します。JavaScript 変数は厳密に型指定されていないため、この文字列を変数に挿入します。mmmonthsmm

于 2012-07-07T20:57:24.070 に答える
0

mm取得した日付オブジェクトに固有の月を表す 0 ~ 11 の数値です。monthsすべての月の名前を含む配列です。と言う場合は、それが配列内の位置にある文字列に等しいmm = months[mm]と言っています。同じ変数名を使用しているため、紛らわしいです。次のようにしたほうがよかったかもしれません。mmmmmonths

var mm = now.getMonth();
alert(mm); // will alert 6
var monthName = months[mm]; // will alert July, which is position 7 in the months array

6という理由mmは、何らかの理由で月のインデックスが 0 であるためです。つまり、月は 0 から始まり、11 まで続きます。1 月は 0、12 月は 11 になります。

于 2012-07-07T20:58:40.807 に答える
0

days配列です。indexdy=0を指定すると、配列の 0 番目の値である がdays[dy]返されます。"sun"同様に、指定された indexは、配列の最初の値である をdy=1返しdays[dy]ます。"mon"等々。

の同じ概念months

しかし、正解は「Javascript または jQuery の組み込み関数を使用する」である必要があります。詳細については、この投稿を参照してください。独自の日時変換関数をローリングすると、ほぼ確実に戻ってきて、長期的には噛み付きます。

于 2012-07-07T20:59:36.200 に答える
0

日付が 08 で、月が July であるとします。

var yy = now.getFullYear();   
var mm = now.getMonth();    // month is 7 now
var dd = now.getDate();     // dd is 8 now
var dy = now.getDay();

今、

mm=months[mm];

意味、

mm = months[7];

// in months array, at seventh index we have july,

mm は 7 月です。

いいえ、変換はしませんが、インデックスに基づいて配列の値を使用します。

于 2012-07-07T21:02:04.353 に答える
0

mm=month[mm]配列のインデックスmm( によって返されるnow.getMonth())の値を取得し、それを変数に入れます。その id は と同じです。monthsmmdy=days[dy]

コードの書き方が悪いことは認識しています。mm2=month[mm]use mm2after ("new" の代わりにmm) を代わりに記述する必要があります。

于 2012-07-07T21:05:27.170 に答える