2016-08-23 45 views
0

我有一個簡單的HTML頁面有一個按鈕切換div ,,但一切工作正常,但我有我的代碼中的if-else語句像這樣:不能在JavaScript幹短手if-else(條件三元運算符)

if (info.style.display === '' || info.style.display == 'none'){ 
    info.style.display = 'inline-block'; 
} else { 
    info.style.display = 'none'; 
} 

我已經決定使用這樣的簡短語句;

info.style.display === ''||info.style.display ==='none' ? info.style.display = 'inline-block' :info.style.display = 'none'; 

,但仍然感覺這就是太長,大概可以乾燥,

嗯,我有兩種方法,但每個都是不正確的做法:

// this solution works but requires two clicks first time run: 

info.style.display ==(''||'none') ?info.style.display = 'inline-block' :info.style.display = 'none'; 

和:

// this solution doesn't work: 
    info.style.display == (''||'none' ? 'inline-block' : 'none'); 

她是>>> My Plunker <<< 對此有任何想法嗎? 謝謝..

+1

'「」 || info.style.display ==='的正確途徑none''會經常檢查第二部分爲空字符串JavaScirpt中的虛假。 'info.style.display = info.style.display ===''|| info.style.display =='none'? 'inline-block':'none';' – Tushar

+0

你應該嘗試在一個臨時變量中存儲'info.style'或甚至'info.style.display' – Bergi

回答

2

既然你總是分配,就把條件放在右邊;你也可以(如果你真的想)使用!info.style.display代替info.style.display == ''

info.style.display = !info.style.display || info.style.display === 'none' ? 'inline-block' : 'none'; 

甚至採取curiously-powerful || operator的優勢,雖然我不知道我會做到這一點:

info.style.display = (info.style.display || 'none') === 'none' ? 'inline-block' : 'none'; 

那因爲'' || 'none'結果在'none',但'anything_else' || 'none'結果在'anything_else'

+0

謝謝,任何想法爲什麼我的第一個解決方案需要兩次點擊? –

2

其實這是用這短短的if-else語句

info.style.display = (info.style.display === '' || info.style.display === 'none') ? 'inline-block' : 'none'; 
+0

@ T.J.Crowder對不起,我使用了你的朋友的代碼 – Fjallbacka

+0

嗯,不是*我的* plunker ... :-) –

+0

我今天怎麼了xD – Fjallbacka