2011-03-22 61 views
6

我的腳本中不能使用else;我如何在不使用else的情況下實施if else聲明?如何編寫沒有'else'的IF else語句

我試圖調整一個div:

function hideTable(){ 
    var table = document.getElementById('PDemo'); 
    if(table.style.width == "50%") table.style.width = "150px"; 
    if(table.style.width == "150px") table.style.width = "50%"; 
} 

這個腳本不起作用,因爲一旦執行第一if聲明,第二if語句中的條件爲真,那麼執行也沒有什麼變化。

P.S.這不是一項家庭作業。我正在使用的軟件只允許使用1行語句。

+26

立即獲取新軟件。 – alex 2011-03-22 13:47:35

+1

@alex說什麼。 :)除此之外,'else if' should work – 2011-03-22 13:47:55

+2

你使用的是什麼軟件? – 2011-03-22 13:49:39

回答

8

如果您不能使用else(也就是瘋狂),請使用switch

switch (table.style.width) { 

    case '50%': 
     ... 
     break; 

    case '150px': 
     ... 
     break; 

} 
+2

downvote?真? – alex 2011-03-22 14:03:58

+0

我不知道,它看起來不會適合在一條線上。 :-) – 2011-03-22 14:04:09

+0

@Dave True,但它被接受:)此外,OP給出的代碼示例也不適用於一行。 – alex 2011-03-22 14:05:16

21

三元運算符:

condition ? execTrue() : execFalse(); 

這相當於:

if (condition) { 
    execTrue(); 
} 
else { 
    execFalse(); 
} 

可以寫一個if/else語句在1號線,就是不按回車鍵...

if (condition) { execTrue(); } else { execFalse(); } 

此外,你可以寫任意複雜的任何聲明在同一行:

if(condition1) { exec1(); } else if(condition2) { exec2(); } else { execFalse() } 

編輯:我要問:WTF一種可怕的軟件只允許你寫一個行語句?這是一種酷刑嗎?這聽起來絕對悲慘

編輯2:如果你在每個後續條件

具有其中第二if語句執行爲好,要實行互斥,即問題,請使用 else if而不是僅僅 if

-tjw只有

+0

哈哈。這是一個報告軟件。它不是日食或任何東西的替代品。它似乎不喜歡那些elses。無論如何,無論如何感謝 – code511788465541441 2011-03-22 13:59:18

+0

嗯,所以你正在輸入這些命令到像一個單線控制檯或什麼?我懂了。那麼如果它不「喜歡」其他的,那麼三元運算符就是你的解決方案。 – 2011-03-22 14:00:21

7
if(/*condition a*/){/*statements a*/}else if(/*condition b*/){/*statements b*/}else{/*statements c/*} 

一行。

10

將該值保存到不同的變量中。

function hideTable(){ 
    var table = document.getElementById('PDemo'); 
    var width = table.style.width; 
    if(width == "50%") table.style.width = "150px"; 
    if(width == "150px") table.style.width = "50%"; 
} 
0

爲了唯一性而使用while循環。

while (!resized){ 
    if(width == "50%") {table.style.width = "150px";resized=true;break}; 
    if(width == "150px") table.style.width = "50%";resized=true;break}; 
    resized=true; 
} 

什麼是您使用的軟件?

+1

我更喜歡'do {// Stuff} while(0);'成語更好。 – Lalaland 2011-03-27 18:03:01

0

With & &算子被稱爲短路算子。它將根據第一個操作數的值返回第二個操作數的值。

例如:(解釋:如果「輪廓」權限,存在於permArray然後用戶負載曲線)

isPermitted(permArray,'profile') && loadProfile(); 

的& &運算符是用於檢查訪問他們的屬性之前空物體也是有用的。例如...

var name = person && person.getName();