javascript - 为什么我的结果总是“其他”?(测验应用程序)(jquery)
问题描述
使用我的学校测验应用程序测试 if/else 时遇到问题。它设置有用于选择答案的单选按钮和一个提交按钮。当您在错误答案上单击提交时,您会收到“否”的警报,但当您选择正确答案时,您也会收到“否”警报,即使我设置了“是!” 当您选择正确答案时提醒。不知道我写错了什么...
编辑我注意到我把 .val(' ') 放在下面的代码中。在被指出后我已经解决了这个问题,我仍然得到相同的结果,将其更改为 .val()
function submitAnswer() {
$('.questionBox').on('submit', function(event) {
event.preventDefault();
$('.altBox').hide();
$('.outcomeBox').show();
let selected = $('input:checked');
let answer = selected.val('');
let correct = STORE[questionNumber].correctAnswer;
if (answer == correct){
alert('Yes!');
} else {
alert('No!');
}
});
}
这是问题:
let questionNumber = 0;
const STORE = [
{
title: 'What year was Donkey Kong released?',
answers: [
'1980',
'1981',
'1982',
'1983'
],
correctAnswer:
'1981'
},
我的 Html/问题设置
function createSetup(){
$('.questionBox').html(`
<form id="quiz" action='#'>
<div class="questionTitle">
<p>Question Title</p><br>
</form>
`);
};
function showQuestion(){
let question = STORE[questionNumber];
$('.questionTitle p').text(question.title);
for(var i = 0; i < question.answers.length; i++) {
$('#quiz').append(`<input type='radio' name='choices' id='${i}' required> ${question.answers[i]}<br>`)
};
$('#quiz').append(`<input type='submit'>`)
};
解决方案
除了我上面的答案之外,这还直接回答了您的问题。
首先,将您的 onclick 事件从函数中移除,否则它将无法正常工作。
接下来,主要问题是无线电输入没有设置值,所以如果你真的想要一个值,你应该添加你正在寻找的正确答案。
我在下面的代码中添加了注释。
祝你好运。
let questionNumber = 0;
const STORE = [
{
title: 'What year was Donkey Kong released?',
answers: [
'1980',
'1981',
'1982',
'1983'
],
correctAnswer:
'1981'
}
];
function createSetup(){
$('.questionBox').html("<form id='quiz' action='#'><div class='questionTitle'><p>Question Title</p><br></form>");
};
function showQuestion(){
let question = STORE[questionNumber];
$('.questionTitle p').text(question.title);
for(var i = 0; i < question.answers.length; i++) {
// -------------------------------------------------
// ADD A VALUE HERE BECAUSE THE RADIO HAS NO VALUE.
// value='"+question.answers[i]+"'
// ----------------------------------------------------
$('#quiz').append("<input type='radio' name='choices' id='"+i+"' value='"+question.answers[i]+"' required> "+question.answers[i]+"<br>");
};
$('#quiz').append("<input type='submit'>");
};
function submitAnswer() {
// take on click out of the function.
}
$('.questionBox').on('submit', function(event) {
event.preventDefault();
$('.altBox').hide();
$('.outcomeBox').show();
let selected = $('input:checked');
let answer = selected.val();
let correct = STORE[questionNumber].correctAnswer;
console.log(answer);
if (answer == correct){
alert('Yes!');
} else {
alert('No!');
}
});
createSetup();
showQuestion();
.questionBox {
background: orange;
height: 100px;
width: 500px;
}
#quiz {
background: #CCC;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="questionBox">test</div>
推荐阅读
- python - 需要高级 Python 书籍推荐
- javascript - Recaptcha 缺少元素“data-sitekey”,因此无法使用任何验证码服务 api
- python - Tkinter, how to get/return value by clicking a button in for-loop?
- qt - 未找到具有已注册类型的 QML 模块
- javascript - 将输入字段绑定到网格组件
- sql-server - 更改过程时无法确定标量变量错误
- c++ - '.' 之前的预期主表达式 令牌
- f# - F# 可区分联合子类型列表
- elasticsearch - 带过滤器的 ElasticSearch 嵌套排序
- react-native - vector-icons/FontAwesome5 在 react-native 上显示错误的图标