Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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
Javascript 单选按钮值不清晰和警报消息问题_Javascript_Html_Css_Events_Radio Button - Fatal编程技术网

Javascript 单选按钮值不清晰和警报消息问题

Javascript 单选按钮值不清晰和警报消息问题,javascript,html,css,events,radio-button,Javascript,Html,Css,Events,Radio Button,我正在构建一个测验应用程序。我面临checkAns()函数的问题。我面临的问题是,在给出正确/不正确的ans后,我的应用程序被msgs“选择至少一个选项”的警报卡住,即使我选择了一个选项。我必须多次单击警报消息“选择至少一个选项”的ok按钮,以便出现下一个问题。我试过调试它,但找不到问题 const quizData=[{question:'你多大岁数?',a:'10',b:'20',c:'23',d:'50',correctAns:'c',count:0},{question:'WWW代表?

我正在构建一个测验应用程序。我面临checkAns()函数的问题。我面临的问题是,在给出正确/不正确的ans后,我的应用程序被msgs“选择至少一个选项”的警报卡住,即使我选择了一个选项。我必须多次单击警报消息“选择至少一个选项”的ok按钮,以便出现下一个问题。我试过调试它,但找不到问题

const quizData=[{question:'你多大岁数?',a:'10',b:'20',c:'23',d:'50',correctAns:'c',count:0},{question:'WWW代表?',a:'万维网',b:'万维网',c:'万维网',d:'以上都没有',correctAns:'a',count 0},{问题:印度的成人年龄?',a:'20',b:'18',c:'17',d:'50',校正者:'b',计数:0},{问题:印度首都?',a:'博帕尔',b:'孟买',c:'加尔各答',d:'新德里',校正者:'d',计数:0},{问题:议员之都?',a:'博帕尔b:'Burhanpur',c:'Indore d:'Guna',校正者:'a',计数:0}];
const question=document.getElementById('question')
const optionA=document.getElementById('a_text')
const optionB=document.getElementById('b_text'))
const optionC=document.getElementById('c_text'))
const optionD=document.getElementById('d_text'))
const input=document.querySelectorAll('input'))
const btnSubmit=document.getElementById('submit')
const radioBtnValue=document.getElementsByName('answer')
let指数;
函数getRandomQuestion(){
返回值(Math.floor(Math.random()*quizData.length))
}
函数radioBtn(){
let元素;
radioBtnValue.forEach((el)=>{
如果(标高已勾选){
元素=el.id
返回;
}
返回;
})
返回元素
}
函数clearRadioBtnValues(){
radioBtnValue.forEach((el)=>{
el.checked=假
})
返回
}
函数检查(值、索引){
如果(值===quizData[index].correctAns){
警报('correct ans')
clearRadioBtnValues()
startQuiz()
}else if(值===未定义){
警报('至少选择一个选项')
}否则{
警报(“错误的ans”)
clearRadioBtnValues()
startQuiz()
}
}
函数startQuiz(){
index=getRandomQuestion()
if(quizData[index].count==0){
question.innerHTML=quizData[index]。问题
optionA.innerHTML=quizData[index].a
optionB.innerHTML=quizData[index].b
optionC.innerHTML=quizData[index].c
optionD.innerHTML=quizData[index].d
quizData[index]。计数++
btnSubmit.addEventListener('click',function(){
让radioBtnValue=radioBtn()
检查(无线BTN值,索引)
})
}
}
window.onload=startQuiz
@导入url(“https://fonts.googleapis.com/css2?family=Poppins:wght@200;400;600&display=swap”);
* {
框大小:边框框;
}
身体{
背景色:#b8c6db;
背景图像:线性梯度(315度,#b8c6db 0%,#f5f7fa 100%);
显示器:flex;
对齐项目:居中;
证明内容:中心;
字体系列:“罂粟花”,无衬线;
保证金:0;
最小高度:100vh;
}
.测验容器{
背景色:#fff;
边界半径:10px;
盒影:0 0 10像素2像素rgba(100,100,100,0.1);
溢出:隐藏;
宽度:600px;
最大宽度:100%;
}
.测验标题{
填充:4rem;
}
氢{
填充:1rem;
文本对齐:居中;
保证金:0;
}
保险商实验室{
列表样式类型:无;
填充:0;
}
ulli{
字号:1.2rem;
保证金:1rem 0;
}
ul li标签{
光标:指针;
}
钮扣{
背景色:#8e44ad;
边界:无;
颜色:白色;
光标:指针;
显示:块;
字体家族:继承;
字号:1.1rem;
宽度:100%;
填充:1.3rem;
}
按钮:悬停{
背景色:#732d91;
}
按钮:焦点{
背景色:#5e3370;
大纲:无;
}

测验应用程序
问题文本
提交
每次调用startQuiz时,您都会将eventlistener添加到按钮中

因此,在第一次启动测验后,将反复调用checkan(radioBtnValue,index)

这是一个更简单的版本。我保留了你的HTML,但重命名了按钮,因为你永远不应该使用“提交”作为ID或名称,以防你在一个你想使用脚本提交的表单中

const quizData=[{question:'你多大岁数?',a:'10',b:'20',c:'23',d:'50',correctAns:'c',count:0},{question:'WWW代表?',a:'万维网',b:'万维网',c:'万维网',d:'以上都没有',correctAns:'a',count 0},{问题:印度的成人年龄?',a:'20',b:'18',c:'17',d:'50',校正者:'b',计数:0},{问题:印度首都?',a:'博帕尔',b:'孟买',c:'加尔各答',d:'新德里',校正者:'d',计数:0},{问题:议员之都?',a:'博帕尔b:'Burhanpur',c:'Indore d:'Guna',校正者:'a',计数:0}]
函数getRandomQuestion(){
返回值(Math.floor(Math.random()*quizData.length))
}
功能检查(索引){
const rad=document.querySelector(“#main ul[type=radio]:checked”);//仅查找选中的收音机
const value=rad?rad.id:;//如果未选中,则设置空值
如果(!值){
警报('至少选择一个选项')
return;//离开函数
}
const res=value==quizData[index]。correctAns?'correct ans':'correct ans';//这称为三元
警报(res);
[…document.queryselectoral(“#main ul[type=radio]”).forEach(el=>el.checked=false);
拼接(索引,1);//删除问题
startQuiz();
}
let index;//全局变量。
函数startQuiz(){
if(quizData.length==0){
document.getElementById('question').innerHTML=“无更多问题”;
D