Почему switch не работает?

valMetr = $(this).val();
//if работает
      if(valMetr==0){
        valMetr = 0;
      }else if(valMetr>1 && valMetr<=49){
        valMetr = 30;
      }else if(valMetr>49 && valMetr<=69){
        valMetr = 35;
        alert(valMetr);
      }else if(valMetr>69 && valMetr<=99){
        valMetr = 60;
      }else if(valMetr>99 && valMetr<=199){
        valMetr = 90;
      }else{
        valMetr = 120;
      }


valMetr = $(this).val();
//switch работает
      switch(true){
        case valMetr == 0:
          valMetr = 0:
          break;
        case valMetr>1 && valMetr<=49:
          valMetr = 30:
          break;
        case valMetr>49 && valMetr<=69:
          valMetr = 35;
          break;
        case valMetr>69 && valMetr<=99:
          valMetr = 60;
          break;
        case valMetr>99 && valMetr<=199:
          valMetr = 90;
          break;
        default:
          valMetr = 120;
      }
  • Вопрос задан
  • 1243 просмотра
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
У вас двоеточие там, где должна быть точка с запятой:

case valMetr == 0:
  valMetr = 0: // <<===== ошибка, должна быть точка с запятой
  break;
case valMetr>1 && valMetr<=49:
  valMetr = 30: // <<===== ошибка, должна быть точка с запятой
  break;

Вместо подобной конструкции switch лучше использовать if ... else.
Быстрее будет работать, как минимум :-)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Потому что вы его неправильно готовите. В switch у вас должен быть valMetr, а в case - значения. Для интервалов switch-case не очень применим.
Ответ написан
Комментировать
cjbars
@cjbars
как то так, но это не самое лечшее применение switch
switch(valMetr){
        case 0:
        case 1:
        case 2:
// еще 47 строчек
        case 49:
          valMetr = 0:
          break;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы