2017-06-27 14 views
0

私は基本的に固執しているので、私は愚かだと感じます。私は段落を含む3つのクラスのクラスを持っていて、新しいDat.getDay()を使ってそれぞれの背景色を変更したいのですが。for javascriptループ内のIF文の複数のAND条件

forループとifステートメントを組み合わせる方法はわかりません正しくクラスの。私は、単純な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-loop終端処理を行うため、n <6 'は 'n> 0 && n <6'でなければなりません。状態はトラブルのように見える – vol7ron

+0

Thansそんなに@ジャロマンダX! :) –

答えて

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;を持っているかもしれすべての3つのオプション。したがって、あなたはどんな変化も見られない。

個人的に私は、これをもっと柔軟にし、読みやすく(そして維持するのが)簡単にするためにこれを分割します。例:

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