1

我目前正在学习 Javascript 并想问如何通过几个 if 语句运行一个 while 循环,以便我将 12 个月显示在列表中,我想我想使用类似的计数器

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

这将是一个更短的解决方案

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 回答
1

我会给你一些先进的解决方案,但是如果你理解它,你会从中学到很多东西......

  1. 创建一个月份数组 = var months['January','February',....]
  2. 现在得到一个元素:var month = months[x];
  3. 以有效的方式返回所有元素:

    在这里,我们克隆了months数组,以便我们拥有原始的副本

    var clonedArray = 月.clone();

    接下来我们要反转我们的数组,所以我们首先有最后一个元素

    clonedArray.reverse();

    接下来我们一次简单地弹出一个元素(pop 首先获取最后一个元素,这就是我们反转数组的原因,以便我们使用 pop 获得的第一个元素是一月而不是十二月

    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 回答