2011-03-22 68 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();