2013-04-11 47 views
-1

我有這樣的JS代碼:JavaScript:變量是錯誤的,但是如果語句是真的?

var show = elm.hasClassName('level0') ? false : true; 
if(show) { 
    doSomething() 
} 

我使用Firebug檢查顯示的值,並將其明確規定。在調試時,我注意到doSomething函數被調用。我錯過了什麼?

使用if(false)不運行doSomething函數。

謝謝!

+1

嘗試'VAR秀=!elm.hasClassName(「0級」)',這是否有什麼區別? (!) – 2013-04-11 14:07:21

+0

@ Kolink1:同樣的結果,它運行doSomething()... – user1856596 2013-04-11 14:08:53

+1

不需要三元運算符,直接使用hasClassName – NimChimpsky 2013-04-11 14:10:07

回答

0

試試這個

if(!elm.hasClassName('level0')) { 
    doSomething() 
} 
2

無論從任何代碼,您已經證明(!),我相信你的調試是錯誤的。可能是你所看到的

elm.hasClassName('level0') 值作爲 false

但是,var show = elm.hasClassName('level0') ? false : true;意味着show將被設置爲elm.hasClassName('level0')

逆只需添加一個alert(show)如果條件上方,看到的是打印的內容。看到這個小提琴http://jsfiddle.net/g4Zqp/1/它工作得很好。

如果不是這種情況下,你需要把你的完整代碼

+1

+1,這絕對是這種情況。或者他的'doSomething()'從代碼中的其他地方被調用:-) – Bergi 2013-04-11 15:14:14

相關問題