1

私は現在 Javascript を学んでおり、リストに表示される 12 か月を取得するために、複数の if ステートメントを while ループで実行する方法を知りたいと思っていました。

while(monthName < 10){

しかし、それを関数に組み込む方法がわかりません:

window.onload = function() {
document.getElementById("months").innerHTML = getMonth(0);
};

function getMonth(month) {
var monthName;
if (month == 0) {
    monthName = "January";
}
if (month == 1) {
    monthName = "February";
}
if (month == 2) {
    monthName = "March";
}
if (month == 3) {
    monthName = "April";
}
if (month == 4) {
    monthName = "May";
}
if (month == 5) {
    monthName = "June";
}
if (month == 6) {
    monthName = "July";
}
if (month == 7) {
    monthName = "August";
}
if (month == 8) {
    monthName = "September";
}
if (month == 9) {
    monthName = "October";
}  
if (month == 10) {
    monthName = "November";
}
if (month == 11) {
    monthName = "December";
}
return monthName;
} 

http://jsfiddle.net/priswiz/rUpsb/

配列を使用するなど、これを行うより効果的な方法があることを理解していますが、教育目的でwhileループ/カウンターを要求しています。

ありがとうございました :)

4

4 に答える 4

2

私は配列を提案します:

var months = ['January','February','March'...];

次に、インデックスを使用して戻ることができます。

for(var i=0, max=months.length; i<max; i++){

     // You could have an if statement in here to do any checks...
     console.log(months[i]); // Just prints to console
}
于 2013-03-21T20:41:34.403 に答える
1

高度なソリューションを少し紹介しますが、それを理解すれば、これから多くのことを学ぶことができます...

  1. 月の配列を作成する= var months['January','February',....]
  2. ここで1つの要素を取得します:var month = months [x];
  3. 効率的な方法ですべての要素を返すには:

    ここでは、月の配列のクローンを作成して、元のコピーを作成します。

    var clonedArray = months.clone();

    次に、配列を逆にして、最後の要素を最初に配置します

    clonedArray.reverse();

    次に、要素を一度にポップします(popは最初に最後の要素を取得するため、配列を逆にして、popで取得する最初の要素がDecemeberではなく1月になるようにします。

    while(clonedArray){
    var month = clonedArray.pop();
    // Do your stuff with month
    $('#yourListId').append($('<li/>').html(month));
    }

最後の行で私はjQueryを使用していますが、これは単に... getElementById('yourListId')を意味し、月の値を持つ新しいリストアイテムを追加します

于 2013-03-21T21:02:50.193 に答える
1

これはより短い解決策になります

var months = ["jannuary", ..., "Dezember"];

function getMonth(monthNumber){
    return months[monthNumber];
}

function getAllMonthsNames(){
    return months.join(", ");
}

私はそれが役立つことを願っています

于 2013-03-21T20:42:40.270 に答える
1
window.onload = function() {
  var current = 0;
    var html = '';
    while(current < 12){
      html += getMonth(current++) + '<br />';        
    }
  document.getElementById("months").innerHTML = html;
};

function getMonth(month) {
var monthName;
if (month == 0) {
    monthName = "January";
}
if (month == 1) {
    monthName = "February";
}
if (month == 2) {
    monthName = "March";
}
if (month == 3) {
    monthName = "April";
}
if (month == 4) {
    monthName = "May";
}
if (month == 5) {
    monthName = "June";
}
if (month == 6) {
    monthName = "July";
}
if (month == 7) {
    monthName = "August";
}
if (month == 8) {
    monthName = "September";
}
if (month == 9) {
    monthName = "October";
}
if (month == 10) {
    monthName = "November";
}
if (month == 11) {
    monthName = "December";
}
return monthName;
}   

http://jsfiddle.net/rUpsb/1/

于 2013-03-21T20:43:47.740 に答える