Javascript 动态添加单选按钮

Javascript 动态添加单选按钮,javascript,jquery,html,css,jquery-ui,Javascript,Jquery,Html,Css,Jquery Ui,我正在尝试制作一个简单的javascript问答应用程序,带有单选按钮。我几乎完成了应用程序的制作,但是如果我想向allQuestions数组添加一个问题,该数组的选项不等于3(例如2或4),该怎么办。 例如,根据问题的选项数量,我可以如何删除或添加单选按钮,例如,问题1只有2个选项,但有3个单选按钮&问题2有4个选项,但有3个单选按钮。 代码: var-allQuestions=[{ 问题:“谁是联合王国首相?”, 选择:[“大卫·卡梅伦”、“戈登·布朗”], 正确答案:0 }, { 问题:

我正在尝试制作一个简单的javascript问答应用程序,带有
单选按钮。我几乎完成了应用程序的制作,但是如果我想向allQuestions数组添加一个问题,该数组的选项不等于3(例如2或4),该怎么办。
例如,根据问题的选项数量,我可以如何删除或添加
单选按钮,例如,问题1只有2个选项,但有3个
单选按钮&问题2有4个选项,但有3个
单选按钮。
代码:

var-allQuestions=[{
问题:“谁是联合王国首相?”,
选择:[“大卫·卡梅伦”、“戈登·布朗”],
正确答案:0
},
{
问题:“谁是印度总理?”,
选择:[“拉胡尔·甘地”、“阿文德·凯伊里瓦尔”、“纳伦德拉·达莫达达斯·莫迪”、“曼莫汉·辛格博士”],
正确答案:2
},
{
问题:“谁是美国首相?”,
选择:[“唐纳德·特朗普”、“巴拉克·奥巴马”、“希拉里·克林顿”],
正确答案:1
},
{
问题:“谁一生中平均每三周就有一项专利?”,
选择:[“托马斯·爱迪生”、“特斯拉”、“爱因斯坦”],
正确答案:0
},
{
问:“哪个大陆被北回归线切割成两个相当相等的一半?”,
选择:[“非洲”、“南美”、“澳大利亚”],
正确答案:2
},
{
问题:“哪位探险家把猪引进了北美?”,
选择:[“克里斯托弗·哥伦布”、“伽利略”、“穆索里”],
正确答案:0
},
{
问题:“在物理学中,什么F词被定义为“原子核结合形成更大质量原子核的核反应”?”,
选择:[“熔炉”、“聚变”、“裂变”],
正确答案:1
},
{
问题:“1781年用望远镜发现的第一颗行星是什么?”,
选择:[“天王星”、“木星”、“火星”],
正确答案:0
},
{
问题:“印度西孟加拉邦首席部长是谁?”,
选择:[“Buddhadev Bhattacharya”、“Jyoti Basu”、“Mamta Banerjee”],
正确答案:2
},
{
问题:“世界上增长最快的宗教是什么?”,
选择:[“伊斯兰教”、“基督教”、“印度教”],
正确答案:0
}
/*
{
问题:“谁是美国首相?”,
选择:[“唐纳德·特朗普”、“巴拉克·奥巴马”、“希拉里·克林顿”],
正确答案:1
},
{
问题:“谁是美国首相?”,
选择:[“唐纳德·特朗普”、“巴拉克·奥巴马”、“希拉里·克林顿”],
正确答案:1
},
{
问题:“谁是美国首相?”,
选择:[“唐纳德·特朗普”、“巴拉克·奥巴马”、“希拉里·克林顿”],
正确答案:1
},
{
问题:“谁是美国首相?”,
选择:[“唐纳德·特朗普”、“巴拉克·奥巴马”、“希拉里·克林顿”],
正确答案:1
},
{
问题:“谁是美国首相?”,
选择:[“唐纳德·特朗普”、“巴拉克·奥巴马”、“希拉里·克林顿”],
正确答案:1
}	*/
];
$(文档).ready(函数(){
var-currentquestion=0;
var=0;
$(“#容器”).hide();
$(“#开始”)。单击(函数(){
$(“#容器”).fadeIn();
$(this.hide();
});
$(函数(){
$(“#progressbar”).progressbar({
max:allQuestions.length-1,
数值:0
});
});
$('#question').html(所有问题[currentquestion].question);
$('label[for=option0]').html(所有问题[currentquestion].choices[0]+“
”; $('label[for=option1]').html(所有问题[currentquestion].choices[1]+“
”; $('label[for=option2]').html(所有问题[currentquestion].choices[2]+“
”; $(“#下一步”)。单击(函数(){ if($((“输入[name=option]:选中”).val()==allQuestions[currentquestion].correctAnswer){ 正确答案++; }; 当前问题++; $(函数(){ $(“#progressbar”).progressbar({ 值:当前问题 }); }); if(当前问题”; $('label[for=option1]').html(所有问题[currentquestion].choices[1]+“
”; $('label[for=option2]').html(所有问题[currentquestion].choices[2]+“
”; if(currentquestion==allQuestions.length-1){ $('#next').html(“提交”); //$(“#下一步”)。关闭(“单击”); $(“#下一步”)。单击(函数(){ $(“#容器”).hide(); $(“#结果”).html(“你的分数是“+currentquestion+”中的“+correctAnswers+”,你的百分比是“+(correctAnswers*100/(currentquestion))+””)。隐藏(); $(“#结果”)。法代因(1500); }); } }; }); });
。按钮{
显示:内联块;
填充:1em;
背景色:#79BD9A;
文字装饰:无;
颜色:白色;
}
身体{
文本对齐:居中;
}
.ui小部件头{
背景图像:无!重要;
背景色:#FF7860!重要;//任何颜色都可以在这里使用
}
标签{
显示:内联块;
/*文本对齐:居中*/
}
h3,
#下一个{
文本对齐:居中;
显示:内联块;
边界半径:20%;
}
输入[name=“option”]{
浮动:左;
}
#表格组{
保证金:自动;
最大宽度:205px;
}
#进度条{
保证金:自动;
边缘顶部:20px;
浮动:无;
宽度:50%;
/*身高:100%*/
}
#容器{
文本对齐:居中;
}
跨度{
边缘:5em;
填充:3em;
}

测验







您可能希望为每个循环尝试一个:

$(allQuestions).each(function( index ) {
  // Loop your entirely div + input + label and use the index to determine the question
  /*
   <div>
       <input type="radio" name="option" value="0" id="option0" checked>
       <label for='option0'></label>
       <br/>
   </div>
  */
  // Increment current question or use index
});
$(所有问题)。每个(函数(索引){
//将整个div+input+标签循环,并使用索引确定问题
/*

*/ //增加当前问题或使用索引 });
试试这种方法:我还编辑了JSFIDLE

函数设置选项(){
    function setupOptions(){
      $('#question').html(allQuestions[currentquestion].question);
      var options = allQuestions[currentquestion].choices;
      var formHtml ='';
      for (var i = 0; i < options.length; i++){
        formHtml += '<div><input type="radio" name="option" value="'+i+'" id="option'+i+'"><label for="option'+i+'">'+allQuestions[currentquestion].choices[i]+'<br/></label><br/></div>';
      }
      $('#form').html(formHtml);
}