Код используется для теста-опросника, состоящего из 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;
})
})
Все действия, описанные в моем комментарии к вопросу, я проделал в голове. В сухом остатке:
switch
так не работает. Вам нужен if { ... } else if { ... }
.
На ванильном яваскрипте if { ... } else if { ... }. Оператор switch для случаев чисел или существительных например switch в случае (картошка) сделать то-то и то-то. А у вас уравнение больше и меньше, поэтому используйте if else структуру, пожалуйста. ЗЫ и switch Это не оператор.
Если очень нужен свитч, то можно так
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() условия надо писать через двойные или тройные === >== <== у вас везде просто = в итоге условия не срабатывают и он просто присваивает константу, поэтому у вас ничего не работает
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Не понимаю, почему с некоторыми сайтами типа googlecom прокси работает, а с русскими сайтами типа 2ip, vk это не работает и выдает ошибку
Как сделать так,чтобы когда на всех вопросах стояло правильно ,то высвечивалась информация в alert со словами - "вы выиграли"