Скрипт опросника через switch

207
11 февраля 2019, 22:30

Код используется для теста-опросника, состоящего из 10 вопросов и 3 вариантов ответов в каждом (a, b и с). Результат должен выдаваться в зависимости от выбранных букв. Например если ответов "а" = 6, то один текст, если ответов "b" = 10, то другой текст, если ответов "с"= 6 то третий текст, и если ответов a, b и с каждого меньше 4, то четвертый текст. Скрипт срабатывает только для варианта "а", а других будто бы и нет вообще. Что здесь неверно?

            $(function(){
            $('.questionForm input[type=submit]').on('click', function(e){
                var answer_a=0;
                var answer_b=0;
                var answer_c=0;
                for(i=0;i<$('.group').length;i++){
                $('.group').eq(i).each(function(id, elem){
                if($(elem).find('input:checked').length!=0){
            if($(elem).find('input:checked').attr('value')=="a"){
                                answer_a++;
                            }
            if($(elem).find('input:checked').attr('value')=="b"){
                                answer_b++;
                            }
            if($(elem).find('input:checked').attr('value')=="c"){
                                answer_c++;
                            }
                        }
                    })
                }
      var general_a = (answer_a/$('.group').length)*10;
      var general_b = (answer_b/$('.group').length)*10;
      var general_c = (answer_c/$('.group').length)*10;
      var greeting;
      if (general_a == 4) {
          greeting = "Text-4!";
      } else if (general_b == 4 ) {
          greeting = "Text-4!";
      } else if (general_c == 4 ) {
          greeting = "Text-4!";
      } else if (general_a == 6 ) {
          greeting = "Text-1!";
      } else if (general_b == 10 ) {
          greeting = "Text-2!";          
      } else if (general_c == 6 ) {
          greeting = "Text-3!";          
      }                 
      else {
          greeting = "Anything";
      }
      document.getElementById("result").innerHTML = greeting;
      return false;
            })
        })
Answer 1

Все действия, описанные в моем комментарии к вопросу, я проделал в голове. В сухом остатке:

switch так не работает. Вам нужен if { ... } else if { ... }.

Answer 2

На ванильном яваскрипте if { ... } else if { ... }. Оператор switch для случаев чисел или существительных например switch в случае (картошка) сделать то-то и то-то. А у вас уравнение больше и меньше, поэтому используйте if else структуру, пожалуйста. ЗЫ и switch Это не оператор.

Answer 3

Если очень нужен свитч, то можно так

 switch (true){
    case (general_a === 6):
        greeting = "text-1!";
    break;
    case (general_a <== 4 || general_b <== 4 || general_c <== 4):
        greeting = "text-4!";
    break;
        case (general_b === 10):
    greeting = "text-2!";
    break;
        case (general_c === 6):
    greeting = "text-3!";
    break;
    default:
        greeting = "Anything";
    }

и у вас ошибка в конструкции if() условия надо писать через двойные или тройные === >== <== у вас везде просто = в итоге условия не срабатывают и он просто присваивает константу, поэтому у вас ничего не работает

READ ALSO
В чем смысл проверки instance instanceof?

В чем смысл проверки instance instanceof?

Встретил вот такую конструкцию:

171
Не работает proxy с аутентификацией Javascript [закрыт]

Не работает proxy с аутентификацией Javascript [закрыт]

Не понимаю, почему с некоторыми сайтами типа googlecom прокси работает, а с русскими сайтами типа 2ip, vk это не работает и выдает ошибку

168
Информация в alert

Информация в alert

Как сделать так,чтобы когда на всех вопросах стояло правильно ,то высвечивалась информация в alert со словами - "вы выиграли"

194