2017-06-27 162 views
0

我覺得愚蠢,因爲我堅持一個基本的。我有三組包含段落的類,我想根據日期更改每個的背景顏色(使用New Dat.getDay()。javascript多條件和IF語句裏面for循環javascript

我不知道如何混合for循環,並且如果每個集合的語句班正常。我想it's簡單的東西,但我失蹤了!

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(); 
+1

似乎'n> 0 ||因爲**每個**數字要麼大於0,要麼小於6(||是OR,&&是AND) –

+0

多個for循環終止n <6應該是n> 0 && n <6 ... ...條件看起來像麻煩 – vol7ron

+0

Thans太多了@JaromandaX! :) –

回答

1

你需要組條件。閱讀問題的更多Operator precedence

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

} 
+0

非常感謝@Dinesh我現在看得很清楚! –

+0

但是...'<<'已經具有比'&&'更高的優先級,那麼添加括號會有什麼變化? – nnnnnn

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); 
    } 
}