如何在Javascript中没有'else'的情况下编写IF else语句

时间:2011-03-22 13:46:19

标签: javascript

我不能在我的脚本中使用else;如何在不使用if else的情况下实施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语句的条件就会变为true,因此也会执行,因此不会发生任何更改。

P.S。这不是作业。我使用的软件只允许使用1行语句。

6 个答案:

答案 0 :(得分:22)

三元运营商:

condition ? execTrue() : execFalse();

这相当于:

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

可以在1行写一个if / else,只是不要输入...

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

此外,您可以在一行中编写任意复杂性的任何语句:

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

编辑:我不得不问:wtf那种可怕的软件只允许你写一行语句?这是某种形式的折磨吗?这听起来非常悲惨

编辑2:如果您遇到第二个if语句执行的问题,您希望强制互斥,即使用else if而不仅仅{{1在每个后续条件

-tjw

答案 1 :(得分: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%";
}

答案 2 :(得分:7)

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

仅限一行。

答案 3 :(得分:7)

如果您无法使用else(并且疯狂),请使用switch

switch (table.style.width) {

    case '50%':
       ...
       break;

    case '150px':
       ...
       break;

}

答案 4 :(得分: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;
}

您使用的是什么软件?

答案 5 :(得分:0)

使用&&操作员称为短路操作员。它将根据第一个操作数的值返回第二个操作数的值。

例如:(解释:如果permArray中存在' profile'权限,则加载用户的个人资料)

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

&&运算符对于在访问其属性之前检查空对象也很有用。例如......

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