2013-02-08 161 views
0

請幫助我。我使用單行javascript if語句,但我希望它在檢查條件後執行兩個操作,但我不知道如何放置第二條語句。我認爲分號會起作用,但事實並非如此。它說分號是錯誤的。 這裏是我的代碼,用分號......單線如果陳述

this.className === "unclickedButton" ? this.className = "clickedButton"; 
$("#alert").style.display="block" : this.className = "unclickedButton"; 
$("#alert").style.display="none" 
+5

爲什麼你就不能使用普通的'if'聲明? –

回答

7

可以做到這一點,利用comma operator

this.className === "unclickedButton" ? 
(this.className = ($("#alert").style.display="block", "clickedButton")) : 
(this.className = ($("#alert").style.display="none", "unclickedButton")); 

...但它沒有透露它使可讀碼。我會使用正常的if

這是使用jQuery(source)的live example。 (我使用showhide,見下文)。但嚴重的是,將可維護性/可讀性比較爲:

if (this.className === "unclickedButton") { 
    this.className = "clickedButton"; 
    $("#alert").style.display = "block"; 
} 
else { 
    this.className = "unclickedButton"; 
    $("#alert").style.display = "none"; 
} 

我知道哪一個我寧願做維護。或者,如果你想要一個班輪,改變CSS稍微讓你有一個button類和clicked類,你添加給它,做到這一點(我在這裏假設的jQuery):

$("#alert").toggle($(this).toggleClass('clicked').hasClass('clicked')); 

Live Example | Source


旁註:你正在使用的樣子你會用jQuery幹什麼用的,但jQuery的情況下,沒有一個style屬性的選擇。如果您使用Prototype或MooTools,則可能需要刪除alert前面的#。如果您使用jQuery,請使用其showhide方法(並且可能使用addClass/removeClass)。

+0

這是因爲每行都有賦值,但不幸的是'$(「#alert」)。style.display ='是無效的,儘管你可以使用可怕的$(「#alert」)[0] .style。顯示=「與其餘的可怕性一起去。 –

+0

@ExplosionPills:大聲笑,我只是在回答這些線看起來很奇怪,不完全匹配jQuery,Prototype或MooTools。 *可以*是其他一些圖書館,但似乎很可疑...... –

+0

@ T.J.Crowder無論何時都沒有聲明,我都認爲jQuery。 –

0

嘗試做到這一點通過DWO如果這樣的語句:

if(statement 1){ 
     ... 
     if(statement 2){ 
     ... 
     } 
    } 
+0

恐怕提問者不會喜歡這個解決方案 –

+0

這兩條語句會是什麼?辦法?我只能想到一個。 –