Я пишу корректный случай переключателя?
var cnt = $("#div1 p").length;
alert(cnt);
switch (cnt) {
case (cnt >= 10 && cnt <= 20):
alert('10');
break;
case (cnt >= 21 && cnt <= 30):
alert('21');
break;
case (cnt >= 31 && cnt <= 40):
alert('31');
break;
default:
alert('>41');
}
По некоторым причинам предупреждение не происходит, когда условия подобраны!
В этом сценарии не следует использовать переключатель
. Это правильный подход:
var cnt = $("#div1 p").length;
alert(cnt);
if (cnt >= 10 && cnt <= 20)
{
alert('10');
}
else if (cnt >= 21 && cnt <= 30)
{
alert('21');
}
else if (cnt >= 31 && cnt <= 40)
{
alert('31');
}
else
{
alert('>41');
}
Вы ищите (0) или (1) результаты.
(cnt> = 10 && cnt <= 20) возвращает либо истину, либо ложь.
- изменить - вы не можете использовать case с логическими (логическими) выражениями. Оператор cnt> = 10 возвращает ноль для false или один для true. Следовательно, это будет регистр (1) или случай (0), которые никогда не будут соответствовать длине. - изменить -
Это должно работать с этим:
var cnt = $("#div1 p").length;
switch (true) {
case (cnt >= 10 && cnt <= 20):
alert('10');
break;
case (cnt >= 21 && cnt <= 30):
alert('21');
break;
case (cnt >= 31 && cnt <= 40):
break;
default:
alert('>41');
}
Коммутатор сравнивает значение в switch ()
с каждым случаем
.
switch (cnt) {
case 1: ....
case 2: ....
case 3: ....
}
работает так:
if (cnt == 1) ...
if (cnt == 2) ...
if (cnt == 3) ...
Следовательно, у вас не может быть никакой логики в операторах case.
switch (cnt) {
case (cnt >= 10 && cnt <= 20): ...
}
работает так же, как
if (cnt == (cnt >= 10 && cnt <= 20)) ...
, и это ерунда. :)
Используйте вместо него if () {} else if () {} else {}
.