【问题标题】:Running a While loop through several if statements in Javascript在 Javascript 中通过多个 if 语句运行 While 循环
【发布时间】:2013-03-11 13:20:35
【问题描述】:

我目前正在学习 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 循环/计数器。

谢谢你:)

【问题讨论】:

  • 您的函数渴望使用switch 语句。
  • 您将不得不“稍微”重构您的代码。这里是这个的好地方link to cool Page
  • 你基本上是在复制数组的功能

标签: javascript loops if-statement while-loop


【解决方案1】:

我会建议一个数组:

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
}

【讨论】:

    【解决方案2】:
    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/

    【讨论】:

    • 回答了问题,但这不是一个好的编码风格(删除了投票,因为回答了实际问题)
    • 耶稣。谁让你成为优秀编码风格的专家。我的上帝 - 他问了一个问题来学习 - 我并没有试图在我的回答中教他所有良好编码的方面
    • 嗨,谢谢,这正是我想知道的,我知道如何将数组用于这些目的,但想知道如何使用 while 循环,感谢您回答我的问题 :)
    【解决方案3】:

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

    var months = ["jannuary", ..., "Dezember"];
    
    function getMonth(monthNumber){
        return months[monthNumber];
    }
    
    function getAllMonthsNames(){
        return months.join(", ");
    }
    

    希望对你有帮助

    【讨论】:

      【解决方案4】:

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

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

        这里我们克隆了months数组,这样我们就有了原始的副本

        var clonedArray = months.clone();

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

        clonedArray.reverse();

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

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

      在最后一行我使用jQuery,它只是意味着... getElementById('yourListId') 并添加一个新的列表项,其值为月份

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-19
        • 2014-08-20
        • 2016-07-10
        相关资源
        最近更新 更多