Задать вопрос

Как в опроснике сделать подсвечивание правильный и неправильных ответов?

У меня есть практически рабочий опросник, но есть проблема.
Нужно сделать выделение правильных и неправильных ответов (чтобы зелёные показывали правильный ответ, красный неправильный).
В js я разбираюсь не очень.
Буду очень рад, если вы мне поможете!

const form = document.querySelector('#form')
form.addEventListener('submit', onSubmit)

function onSubmit (event) {
  event.preventDefault()

  let listCheckbox = document.querySelectorAll('.i-6')
  listCheckbox = [...listCheckbox]

  // Проверяем выбран ли хотябы один ответ
  if (!listCheckbox.some(checkbox => checkbox.checked)) {
    alert('Вы не выбрали ни одного ответа')
  }
  
  else{
    form.addEventListener('submit', onSubmit)
    alert('Вы подтверждаете действие?');
  }
  // Узнаем сколько всего правильных ответов
  const rightAnswersCount = listCheckbox.filter(checkbox => Number(checkbox.value) === 1).length

  // Узнаем сколько всего не правильных ответов
  const wrongAnswerCount = listCheckbox.length - rightAnswersCount

  // Узнаем количество правильных ответов
  const rightAnswers = listCheckbox.filter(checkbox => Number(checkbox.value) === 1 && checkbox.checked).length

  // Узнаем количество не правильных ответов
  const wrongAnswer = listCheckbox.filter(checkbox => Number(checkbox.value) === 0 && checkbox.checked).length

  // Уведомляем пользователя
  console.log(`Вы ответили правильно на ${rightAnswers} из ${rightAnswersCount}`)
  console.log(`Вы ответили не правильно на ${wrongAnswer} из ${wrongAnswerCount}`)
 
  //Вывод ответа с процентами
  console.log(`Процент правильных ответов: ${(rightAnswers / rightAnswersCount) * 100}`)
  console.log(`Процент неправильных ответов: ${(wrongAnswer / wrongAnswerCount) * 100}`)
}


<form method="POST" action="#" id="form">
    <section class="table_1">
        <table class="iksweb">
            <tbody>
                <tr>
                    <td rowspan="3"><b>Культура<br>обслуживания</b>
                        <h3 class="the">Скорость:</h3>   
                        <section class="conteiner">
                            <div class="checkbox">
                                <input type="checkbox" class="i-6" id="i6" value="1">
                                <label for="i6" tabindex="12">Выполнять стандарты по времени обслуживания</label>     
                            </div>
                            <div class="checkbox">
                                <input type="checkbox" class="i-6" id="i7" value="0">
                                <label for="i7" tabindex="13">Время ожидания в очереди 120 секунд</label>     
                            </div>
                            <div class="checkbox">
                                <input type="checkbox" class="i-6" id="checkbox_68" value="1">
                                <label for="checkbox_68" tabindex="14">Время ожидания в очереди 90 секунд</label>     
                            </div>
                            <div class="checkbox">
                                <input type="checkbox" class="i-6" id="checkbox_69" value="1">
                                <label for="checkbox_69" tabindex="15">Время обслуживания 90 секунд</label>
                            </div>
                            <div class="checkbox">
                                <input type= "checkbox" class="i-6" id="checkbox_70" value="0">
                                <label for="checkbox_70" tabindex="16">Время обслуживания 120 секунд</label>
                            </div>
                            <div class="checkbox">
                                <input type="checkbox" class="i-6" id="checkbox_71" value="0">
                                <label for="checkbox_71" tabindex="17">Время обслуживания 60 секунд</label>
                            </div>
                            <div class="out-block out-6"></div>
                        </section>
                    </tr>
                 </tbody>
              </table>
          </section>
       </form>
  • Вопрос задан
  • 537 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Gavr_Gavr
@Gavr_Gavr
Не совсем понятно зачем Вам форма? Я так понял судя из задачи нужно определять ошибку динамически. Если так то просто проверяйте на соответсвия value и check и назначайте нужный класс который подкрасит ответы.
Что то типа такого:

let listCheckbox = document.querySelectorAll('.i-6')
for(i=0; i<listCheckbox.length; i++){
      if((listCheckbox[i].checked == true && listCheckbox[i].value == 1) || (listCheckbox[i].checked == false && listCheckbox[i].value == 0)) {
         listCheckbox[i].classList.add("right")
      }
      else(
         listCheckbox[i].classList.add('false')
      )
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы