Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeError.val()不是Javascript上所选答案的函数_Javascript_Jquery_Html_Arrays_Object - Fatal编程技术网

TypeError.val()不是Javascript上所选答案的函数

TypeError.val()不是Javascript上所选答案的函数,javascript,jquery,html,arrays,object,Javascript,Jquery,Html,Arrays,Object,我正在尝试检查所选答案是否正确,如果正确,则应将+1添加到我的用户分数中。 但我不明白为什么我的代码不起作用。你能帮我把臭虫放在哪里吗?或者我错过了什么 function loadNextQuestion () { var selectOption = document.querySelector('input[type=radio]:checked'); if (selectOption.val() == questions[answer]) { ++userScore;

我正在尝试检查所选答案是否正确,如果正确,则应将+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);
});

您的单选按钮元素不在jQuery包装器对象中,因此jQuery方法val()将不起作用

试一试


相反。

您的单选按钮元素不在jQuery包装器对象中,因此jQuery方法val()不起作用

试一试


相反。

您的代码不工作的原因是您正在将布尔值(
selectOption.val()
[这是错误的-它应该是
selectOption.value
])与数组的元素(
问题[答案]
)进行比较,然后在
else if
语句中询问
selectOption
是否为真。此代码将始终运行

修复代码只需要您更改以下内容:

if (selectOption.val() == questions[answer]) {...}
变成这样:

if (selectOption.attr("id") == questions[answer]) {...}
<input type="radio" id="Chocolate-ice-cream" />
var questions = ["Chocolate is used in what flavour of ice cream", "Chocolate-ice-cream", ...];
使用如下HTML:

if (selectOption.attr("id") == questions[answer]) {...}
<input type="radio" id="Chocolate-ice-cream" />
var questions = ["Chocolate is used in what flavour of ice cream", "Chocolate-ice-cream", ...];

希望我所说的有道理,但如果你什么都不懂,请告诉我。

你的代码不起作用的原因是因为你正在将布尔值(
selectOption.val()
[这是错误的-应该是
selectOption.value
])与数组元素(
问题[答案]
)进行比较,然后在
else if
语句中询问
selectOption
是否为真。此代码将始终运行

修复代码只需要您更改以下内容:

if (selectOption.val() == questions[answer]) {...}
变成这样:

if (selectOption.attr("id") == questions[answer]) {...}
<input type="radio" id="Chocolate-ice-cream" />
var questions = ["Chocolate is used in what flavour of ice cream", "Chocolate-ice-cream", ...];
使用如下HTML:

if (selectOption.attr("id") == questions[answer]) {...}
<input type="radio" id="Chocolate-ice-cream" />
var questions = ["Chocolate is used in what flavour of ice cream", "Chocolate-ice-cream", ...];

希望我所说的有道理,但如果你什么都不懂,请告诉我。

你能发布所有相关的HTML和JavaScript代码吗?我们看不到
loadQuestion()
loadQuestionNum()
是什么,也看不到数组
questions
或变量
answer
。请用相关代码更新您的帖子。这种错误在使用jQuery库时经常发生。为了避免这些问题,您可以选择使用jQuery而不是纯JS,或者相反。请发布所有相关的HTML和JavaScript代码好吗?我们看不到
loadQuestion()
loadQuestionNum()
是什么,也看不到数组
questions
或变量
answer
。请用相关代码更新您的帖子。这种错误在使用jQuery库时经常发生。为了避免这些问题,您可以选择jQuery替代方案而不是纯JS,或者相反。谢谢,我已经尝试过了,而且效果不错。我会更加小心,不要在同一个函数中混合使用JS和JQuery。谢谢,我已经尝试过了,而且效果很好。我会更加小心,不要在同一个函数中混合使用JS和JQuery