Как написать инструкцию IF else без 'else'

Я не могу использовать else в своем script; как я могу реализовать инструкцию 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%";
}

Этот script не работает, потому что как только выполняется первый оператор if, условие для второго оператора if становится истинным, так что это тоже выполняется, поэтому ничего не меняется.

P.S. Это не домашнее задание. Программное обеспечение, которое я использую, допускает только однострочные операторы.

Ответы

Ответ 1

Если вы не можете использовать else (и это безумие), используйте switch.

switch (table.style.width) {

    case '50%':
       ...
       break;

    case '150px':
       ...
       break;

}

Ответ 2

Тернарный оператор:

condition ? execTrue() : execFalse();

Это эквивалентно:

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

Вы можете написать if/else в 1 строке, просто не нажимайте enter...

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

Кроме того, вы можете написать любой оператор произвольной сложности в одной строке:

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

РЕДАКТИРОВАТЬ: Я должен спросить: wtf вроде ужасного программного обеспечения позволяет вам писать однострочные заявления? Это какая-то форма пыток? Это просто звучит абсолютно жалко.

РЕДАКТИРОВАТЬ 2: Если у вас возникла проблема, когда выполняется второй оператор if, вы хотите наложить взаимное исключение, то есть использовать else if вместо всего if для каждого последующий условный

-tjw

Ответ 3

Сохраните значение в другой переменной.

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%";
}

Ответ 4

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

Только одна строка.

Ответ 5

с замкнутым циклом для единственности.

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

Какое программное обеспечение вы используете?

Ответ 6

С && оператор называется оператором короткого замыкания. Он вернет значение второго операнда на основе значения первого операнда.

Например: (объяснение: если в permArray существует разрешение профиля), загрузите профиль пользователя)

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

& & оператор полезен также для проверки нулевых объектов перед доступом к их атрибутам. Например...

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