Как написать оператор IF else без 'else' в 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
утверждение становится истинным, так что выполняется тоже, поэтому ничего не меняется.
PS Это не домашняя работа. Программное обеспечение, которое я использую, допускает только однострочные операторы.
6 ответов
Если вы не можете использовать else
(и это безумие), используйте switch
,
switch (table.style.width) {
case '50%':
...
break;
case '150px':
...
break;
}
Тернарный оператор:
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
Сохраните значение в другую переменную.
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%";
}
if(/*condition a*/){/*statements a*/}else if(/*condition b*/){/*statements b*/}else{/*statements c/*}
Только одна строка
С && оператор называется оператором короткого замыкания. Он вернет значение второго операнда на основе значения первого операнда.
Например: (объяснение: если в permArray существует разрешение 'profile', тогда загрузите профиль пользователя)
isPermitted(permArray,'profile') && loadProfile();
Оператор && также полезен для проверки нулевых объектов перед доступом к их атрибутам. Например...
var name = person && person.getName();
С циклом 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;
}
Какое программное обеспечение вы используете?