TypeError .val () не является функцией моего выбранного ответа на Javascript - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь проверить, является ли выбранный ответ правильным, если это так, то он должен добавить + 1 к моей оценке пользователя.Но я не понимаю, почему мой код не работает.Не могли бы вы помочь мне, где ошибка или я пропустил что-то еще?

 function loadNextQuestion () {
  var selectOption = document.querySelector('input[type=radio]:checked');
  if (selectOption.val() == questions[answer]) {
    ++userScore;
  } else if (selectOption) {
    ++currentQuestionNum;
    loadQuestion();
    loadQuestionNum();
  } else {
    alert("Please pick an answer.");
  }
};
$("#nextButton").click(loadNextQuestion);
});

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Причина, по которой ваш код не работает, заключается в том, что вы сравниваете логическое значение (selectOption.val() [которое в любом случае неверно - это должно быть selectOption.value]) с элементом массива (questions[answer]), а затемв вашем else if заявлении вы спрашиваете, истинно ли selectOption.Этот код будет всегда выполняться.

Для исправления кода требуется только изменить это:

if (selectOption.val() == questions[answer]) {...}

На что-то вроде этого:

if (selectOption.attr("id") == questions[answer]) {...}

С таким HTML-кодом:

<input type="radio" id="Chocolate-ice-cream" />

И ваши вопросы выглядят так:

var questions = ["Chocolate is used in what flavour of ice cream", "Chocolate-ice-cream", ...];

Надеюсь, то, что я сказал, имеет смысл, но, пожалуйста, скажите, если вы ничего не понимаете.

0 голосов
/ 12 октября 2018

Элемент переключателя не находится в объекте-оболочке jQuery, поэтому метод jQuery val () не будет работать.

Вместо этого попробуйте

if(selectOption.value == questions[answer]) {
   ...
}

.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...