javascript在IF语句里面的多个AND条件for循环javascript

时间:2017-06-27 03:21:43

标签: javascript for-loop if-statement

我感到愚蠢,因为我坚持使用基本的。我有三组包含段落的类,我想根据日期改变每一个的背景颜色(使用New Dat.getDay()。

我不知道如何正确地为每组类混合for循环和if语句。我想这很简单,但我错过了它!

function changecolor() {
  var d = new Date();
  var n = d.getDay();
  var weekda = document.getElementsByClassName('weekdays');
  var sat = document.getElementsByClassName('saturday');
  var dom = document.getElementsByClassName('sun-fer');
  for (var i = 0; i < weekda.length && i < sat.length && i < dom.length; i++)
    if (n > 0 || n < 6) {
      weekda[i].setAttribute("style", "background-color:#0091ea;color:white;");
    }
  else if (n == 6) {
    sat[i].setAttribute("style", "background-color:#0091ea;color:white;");
  } else {
    dom[i].setAttribute("style", "background-color:#0091ea;color:white;");
  }
}
}
changecolor();

2 个答案:

答案 0 :(得分:1)

您需要对条件进行分组。详细了解Operator precedence

 for (var i = 0;( (i < weekda.length) && (i < sat.length) && (i < dom.length)); i++){
   // your code

 }

答案 1 :(得分:1)

部分问题可能是你有background-color:#0091ea;color:white;这三个选项。因此,您可能没有看到任何变化。

就个人而言,我会稍微分解一下,使其更灵活,更容易阅读(和维护)。例如:

function changecolor() {
    var d = new Date();
    var e = null;
    var s = null;
    switch(d.getDay()) {
        case 6:
            e = document.getElementsByClassName('saturday');
            s = "background-color:#0091ea;color:white;";
            break;
        case 0:
            e = document.getElementsByClassName('sun-fer');
            s = "background-color:#0091ea;color:green;";
            break;
        default:
            e = document.getElementsByClassName('weekdays');
            s = "background-color:#0091ea;color:blue;";
    }
    // now update the color
    updateItem(e,s);
}

function updateItem(e,s) {
    var i, max = e.length;
    for(i=0;i<max;i++) {
        e[i].setAttribute("style",s);
    }
}