Javascript 将下拉框更改为测验单选按钮

Javascript 将下拉框更改为测验单选按钮,javascript,html,forms,Javascript,Html,Forms,这里是代码新手 我已经设法建立了一个表格,根据用户的选择汇总用户的分数。而且它有效 这是我的密码: 函数最终核心(圆形){ var=0; var选择值; var questions=document.getElementsByClassName(“问题”); var numOfQuestions=questions.length; for(var i=0;i{ //在函数体中,我们检索所有相关元素 //使用document.querySelectorAll(),传递CSS选择器 //提供给函数

这里是代码新手

我已经设法建立了一个表格,根据用户的选择汇总用户的分数。而且它有效

这是我的密码:

函数最终核心(圆形){
var=0;
var选择值;
var questions=document.getElementsByClassName(“问题”);
var numOfQuestions=questions.length;
for(var i=0;i
你多大了?
19 - 26
27 - 36
37 - 40
41+


你们的关系状况如何? 单身,很兴奋能看到外面的一切。 最近单身,情绪崩溃。 有一些不经意的事情在进行中,而不是寻找任何太严重的事情。 在一段忠诚的关系中,只为LOL参加这个测验。

您的位置在哪里? 位置无关 伦敦/英国 欧洲 在别处

提交
此处得分
根据问题中的代码和问题描述,以及对问题的评论,我制定了以下解决方案。我所做的假设是:

  • 您希望将
    元素转换为
    元素,并且
  • 您希望根据分配给每个
    元素的值确定总分
  • 考虑到这一点,我对HTML进行了调整,以更好地适应确定的假设及其要求:

  • 每个
    选项
    元素的值都是分数的数值等价物,以便在计算中更容易使用,因此
    value=“four”
    已成为
    value=“1”
  • 每个
    元素之前的
    textNode
    节点已转换为
    ,以便可以将每个
    元素的“组”视为一个组
  • 我已经从每个
    id
    中删除了数字,这似乎基本上是不相关的,而在HTML 5中,以数字开头的
    id
    是有效的,在历史上,通过CSS选择这样的
    id
    是有问题的,因为数字需要显式转义
  • 我还为
    元素分配了
    name
    属性,这是因为当结果存储在数据库中时,需要
    name
    将值正确传递给服务器,并且
    元素作为互斥组(因此一次只能从相关元素中选择一个
    )必须分配
    名称
    属性来标识该关系。因此,在操作之前将
    名称
    添加到
    ,而不是依赖自动生成的
    名称
    ,这会或可能会导致服务器端存储问题,是有意义的
  • 综上所述,解决问题的一种方法如下:

    //使用“const”将函数声明为常量;
    //无法重新分配用常量声明的变量,
    //如果变量是对象或数组,则
    //该对象或数组的属性或内容可以
    //将在以后更改/更新:
    常量选择器RADIO=(选择器)=>{
    //在函数体中,我们检索所有相关元素
    //使用document.querySelectorAll(),传递CSS选择器
    //提供给函数;然后该函数
    //节点列表使用排列语法转换为数组:
    const selects=[…document.querySelectorAll(selectSelector)],
    //我们创建基本元素:
    输入=document.createElement('input'),
    label=document.createElement('label'),
    span=document.createElement('span');
    //设置所创建元素的类型:
    input.type='radio';
    //在这里,我们使用节点数组并对其进行迭代
    //使用带有箭头的Array.prototype.forEach()数组
    //功能:
    选择。forEach(
    //“sel”是对当前元素的引用
    //从我们所处的元素数组中
    //迭代:
    (sel)=>{
    //在这里,我们指定“name”属性的属性值
    //元素的“groupName”作为
    //我们正在创建的元素:
    让groupName=sel.name,
    //这里我们检索所有的子元素
    //从当前元素中,使用
    //元素。querySelectorAll()并再次创建
    //具有扩展运算符的
    //结果可编辑节点列表:
    options=[…sel.querySelectorAll('option')],
    //这里我们创建一个documentFragment(),以便
    //可以同时附加创建的元素:
    fragment=document.createDocumentFragment();
    //这里我们再次使用Array.prototype.forEach()对
    //元素数组:
    options.forEach(
    //“opt”(这些变量可以随意命名,所以
    //只要是