2016-07-04 58 views
0

我正在爲表中的所有單元格設置背景顏色。在表格中只有數字數據。下面的代碼工作。它將大於10的數字的背景設置爲綠色,並將等於10的數字設置爲紅色。內聯if-else內聯if-else語句javascript

.css({'background-color':value >10 ? 'green' :'red'}) 

但是,當想要設置三種不同的顏色作爲背景,我不知道如何把它正確地放在JavaScript中。我想在ifelse語句中使用ifelse語句。下面的代碼應該接近解決方案。它想要將大於10的數字的背景設置爲綠色,然後將其設置爲低於5的紅色。 5到10之間的數字應該是橙色背景。

.css({'background-color':value >10 ? 'green' :'background-color':value <5 ? 'red' :'orange'}) 

代碼有什麼問題?

+0

爲什麼你重複'{ '背景顏色':'...'}在內部的三元表達?不要這樣做。 – Xufox

+1

正確的術語是「三元」操作符。與'if-else'語句不同,三元運算符是一個表達式,可以在函數參數列表或對象/數組文字中使用。 – ftor

回答

2

總是使用括號,如果你有嵌套直列如果

.css({'background-color': (value > 10 ? 'green' : (value < 5 ? 'red' : 'orange'))}) 

你應該重構你的代碼到另一個函數以避免的if-else地獄,讓你的代碼更加清晰:

function valueToColor(value) { 
    if(value > 10) return 'green'; 
    if(value >= 5) return 'orange'; 
    return 'red'; 
    // equivalent to: return (value > 10 ? 'green' : (value < 5 ? 'red' : 'orange')) 
} 

// ... 

.css({'background-color': valueToColor(value)}) 
+1

'inline'請:) –

0

我的建議是用一個變量取出該代碼。它不起作用,因爲您沒有將三元條件語句和重複的鍵分組。

這工作:

var variable = (value >10 ? 'green' : (value <5 ? 'red' :'orange')); 
.css({'background-color': variable}) 

試試:

function alertit(value) { 
 
    var variable = (value >10 ? 'green' : (value <5 ? 'red' :'orange')); 
 
    alert(variable); 
 
} 
 

 
alertit(document.getElementsByTagName('input')[0].value)
Change value: <input type="text" value="3" onchange="alertit(this.value)">