2013-01-17 323 views
3

我不明白爲什麼這不起作用。有人能告訴我這有什麼問題嗎?根據值更改顏色

var x = $('#clicked_info').val(); 

if(x == 1) { 

    $('#companyname_ph').css({'color':'yellow'}); 

} 

else if(x == 2) { 

    $('#companyname_ph').css({'color':'red'}); 

} 
+1

什麼'# clicked_info'?你確定它包含'1'或'2'嗎? – Ryan

+0

這可以使用更多的上下文。例如,您是否期望在值發生更改或僅在頁面加載時應用CSS?你可以得到有關字符串與數字比較的答案,這些比較可以使它失敗(所以使用parseInt()是一種很好的做法),但它也可以成功,你可能會看到其他一些問題。 –

+0

這是''還是別的?瘋狂的猜測:如果你想獲取文本內容,請使用'.text()',而不是'.val()'。 – Ryan

回答

2

您需要使用parseInt將字符串轉換爲整數。

var x = $('#clicked_info').val(); 

if(parseInt(x) == 1){ 

    $('#companyname_ph').css({'color':'yellow'}); 

} else if(parseInt(x) == 2){ 

    $('#companyname_ph').css({'color':'red'}); 

} 

OR使用字符串比較

if(x == '1'){ 
+1

我可能會在這裏添加如果您將字符串轉換爲整數,那麼可能會像'==='比較運算符而不是== ==一樣。 –

+0

我覺得JavaScript已經這樣做了,當你比較'1'== 1'時,它返回false。你不需要寫''1 === 1' – Sahal

+0

@Sahal:沒有。嘗試一下。 – Ryan

1

val回報string

x == 1 shoulb是x == '1'

x == 2應該x == '2'

或者您可以使用以下命令將x轉換爲int。

var x = $('#clicked_info').val(); 
x = parseInt(x); 
+0

'1 =='1''。這應該不重要。 – Ryan

0

像其他人在這裏所指出的,你應該使用parseInt當你想爲整數的字符串表示轉換爲數字類型。我想補充一點,你應該提供一個基數parseInt,因爲如果你不這樣做,你可能會得到意外的結果,如果你的字符串以「0x」 :)

嘗試做意外啓動:

var x = parseInt($('#clicked_info').val(), 10) 
+0

如果你的字符串存在'0x'(十六進制),你不僅會得到意想不到的結果,而且如果你的字符串以'0'(八進制)開始,你會得到意想不到的結果,這比0x更普遍。 –