2013-03-21 92 views
1

我當前正在學習Javascript並想問如何通過幾個if語句運行一個while循環以便我能夠在列表中顯示12個月,我想我是假設使用計數器類似在Javascript中通過幾個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/

我明白有更有效的方式來做這件事,比如使用數組,但是爲了教育目的而要求循環/計數器。

謝謝:)

+1

你的功能渴求'之開關的使用聲明。 – 2013-03-21 20:37:57

+3

...或者一個數組... – Pointy 2013-03-21 20:40:09

+0

你將不得不重構你的代碼「一點」。這裏是[鏈接到酷頁面](http://codereview.stackexchange.com/) – 2013-03-21 20:40:14

回答

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/

+2

爲什麼給我投票呢? – Adidi 2013-03-21 20:45:35

+2

回答這個問題,但它不是一個好的編碼風格(刪除投票下來,因爲回答了實際問題) – 2013-03-21 20:45:47

+0

耶穌。誰讓你成爲一名優秀的編碼風格的專家。我的上帝 - 他問一個問題要學習 - 我不是要在他的回答 – Adidi 2013-03-21 20:47:00

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 
} 
1

這將是一個更短的解決方案

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

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

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

i希望它可以幫助

1

我會給你一個先進的解決方案一點點但是如果你瞭解它,你會學到很多東西,從這個......

  1. 創建一個數組的月份= var months['January','February',....]
  2. 現在得到一個元素:var month = months [x];
  3. 要返回的所有元素以高效的方式:

    在這裏,我們克隆月陣列,使我們有原來

    VAR clonedArray = months.clone的副本();

    接下來我們要扭轉我們的數組,所以我們有最後一個元素第一

    clonedArray。相反();

    下一步,我們只是在一個時間彈出一個元素(流行首先獲取最後一個元素,這就是爲什麼我們顛倒了數組,使我們與流行拿到的第一個元素是一月份,而不是Decemeber

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

在最後一行中我使用jQuery,它只是意味着...的getElementById(「yourListId」),並與一個月的價值,增加一個新的列表項