Javascript switch (true)
Привет, я пытаюсь обработать ответ ajax json
вот мой код
success: function (j) {
switch(true)
{
case (j.choice1):
alert("choice2");
break;
case (j.choice2):
alert("choice2");
break;
default:
alert("default");
break;
}
}
на основе того, что j возвращает, я делаю свое действие, НО я продолжаю получать значение по умолчанию.
Я предупреждаю значения j и прихожу правильно. Некоторое, как случай (j.choice1) case (j.choice2) не работает.
Я попробовал case (j.choice1!= ") (j.choice2!=" ") Но в этом сценарии я всегда получаю первый выбор.
Что мне не хватает
Ответы
Ответ 1
Это работает для меня:
var a = 0, b = true;
switch(true) {
case a:
alert('a');
break;
case b:
alert('b');
break;
}
Однако метки case
должны быть равны true
, а не jut неявно true.
Кроме того, будет выполняться только первый случай, который оценивается как true
.
Ответ 2
Вам нужно прочитать инструкцию switch
. Вы не должны включать постоянное значение.
Кажется, что вам нужно использовать операторы if, так как вы действительно не хотите включать значение j
:
success: function (j) {
if (j.choice1)
{
alert("choice1");
break;
}
if (j.choice2)
{
alert("choice2");
break;
}
alert("default");
}
}
Ответ 3
решаемые
На основании ответа SLaks я изменяю код ниже
if(j.choice1){ var choice1=true;} else { var choice1=false;}
if(j.choice2){ var choice2=true;} else { var choice2=false;}
switch(true)
{
case choice1:
alert("choice1");
break;
case choice2:
alert("choice2");
break;
default:
alert("default");
break;
}
Для всех спрашивайте, зачем переключаться, а не если.
Коммутатор выполнит только 1 оператор, но если может выполнить более 1, если какая-либо ошибка возникла в результате ответа (например, если задано значение выбора1 и выбор 2, то если будет предупреждать обоим, но переключатель будет предупреждать только о выборе1).
Ответ, ожидающий, что выбор будет связан с оплатой кредитной карты банку, поэтому я хочу убедиться, что только 1 действие будет выполнено
Спасибо всем
Ответ 4
В таком случае лучший способ сделать это, вероятно, примерно так:
success: function (j) {
if(j.choice1 || j.choice2) {
alert("choice2");
} else {
alert("default");
}
}