根据用户评分进行问卷评分

Questionnaire scoring based on User's score

我是个菜鸟,所以请原谅我的错误。我正在尝试创建一个脚本,该脚本根据 5 分李克特量表问卷的结果,根据用户 A 的分数 returns 为用户 B 计算新分数。两者都是先在页面顶部输入,然后是改变用户B得分的问卷在下面。它应该是这样工作的:

首先:
用户A得分=x
用户B得分=y
它将用户A的得分四舍五入到最接近的 50,然后除以 50 得到一个我们称之为 z 的数字。
例如,用户 A 得分 = 442,四舍五入为 450,然后除以 50 = 9.This 新数字为 z .或 z =x/50(最接近的整数)。现在根据调查响应,如果用户 A 单击 "very poor",它会获取用户 B 分数的输入数据并从中减去 z。然后根据提交后的问卷结果给出如下新结果:

Very poor = y-z
Poor = y (doesn't change the score)
满意 = y+z
好 = y+z+1
非常好 = y+z+2

让我知道这是否有意义.我在下面附上了我尝试制作的示例代码,但我确定它是错误的。它需要做的不止于此,但这是我想弄清楚的最低限度。谢谢

 <!DOCTYPE html>
    <html>
        <head>

    </head>
    <body>

    <h1>
        Questionnaire mess around
    </h1>
    <p>

        <label for='ascore' class="inlinelabel">User A Score</label>
        <input id="ascore" type="number"> <br>
        <br>
        <label for='bscore' class="inlinelabel">User B Score</label>
        <input id="bscore" type="number">

        </p>


    <form action="" id="scorecalc" onsubmit="return false;">
       <fieldset>


        <br>
        <legend>Peer Review Questionnaire!</legend>
        <h3> Based on your recent project together, how would you rate User B in the following Skills</h3>

            <hr>
        <label ><strong>Time Management</strong></label> 
        <br>
        <br>
        <input type="radio"  name="tmscore" value="tmvpoor" />
        Very Poor
        <input type="radio"  name="tmscore" value="tmpoor"/>
        Poor
        <input type="radio"  name="tmscore" value="tmsat" />
        Satisfactory
        <input type="radio"  name="tmscore" value="tmgood"/>
        Good
        <input type="radio"  name="tmscore" value="tmvgood" />
        Very Good

        <br>

       <button onclick="myFunction()" class="button">Submit</button>


        </fieldset>
    </form>

    <h2>

    User B New Score </h2>

    <p id="result"></p>

    <script> 
    var theForm = document.forms["scorecalc"];
    var x = document.getElementByID(ascore).value
    var y = document.getElementByID(bscore).value

    function closest50(x) {
      return Math.round(x/ 50) * 50
    }

    var z = closest50(x)

    var tm_result = new Array();
    tm_result["tmvpoor"]=y-z;
    tm_result["tmpoor"]=y;
    tm_result["tmsat"]=y+z;
    tm_result["tmgood"]=y+z+1;
    tm_result["tmvgood"]=y+z+2

    function myFunction() {
        document.getElementById("result").innerHTML = tm_result;
    }
    </script>
    </body>

你的代码有很多问题

  • 应该在函数内部的东西没有
  • 你不是真的想要一个数组而是对象来存储 key/value 对
  • 输入字段的值始终是字符串,在进行数学运算之前需要将其转换为数字
  • document.getElementByID 不是你想要的函数 ...ById
  • 你说过要将 x 除以 50 但你立即将它乘以 50 回到原来的状态
  • 你的 document.getElementById 中的 ascore 和 bscore 应该是字符串
  • 您想将字符串传递给 .innerHTML 而不是 array/object

这是工作代码。如果您对此有任何疑问,请在下面post评论(我只更改了 JS 部分)。

const theForm = document.querySelector('#scorecalc');

function closest50(x) {
 return Math.round(x / 50);
}

function myFunction() {
   const x = Number(document.getElementById('ascore').value);
   const y = Number(document.getElementById('bscore').value);
   const choice = document.querySelector('input[type=radio]:checked').value;
   const z = closest50(x)

   const tm_result = {
     tmvpoor: y - z,
     tmpoor: y,
     tmsat: y + z,
     tmgood: y + z + 1,
     tmvgood: y + z + 2
   };

   document.getElementById("result").innerHTML = tm_result[choice];
}
    <h1>
        Questionnaire mess around
    </h1>
    <p>

        <label for='ascore' class="inlinelabel">User A Score</label>
        <input id="ascore" type="number"> <br>
        <br>
        <label for='bscore' class="inlinelabel">User B Score</label>
        <input id="bscore" type="number">

        </p>


    <form action="" id="scorecalc" onsubmit="return false;">
       <fieldset>


        <br>
        <legend>Peer Review Questionnaire!</legend>
        <h3> Based on your recent project together, how would you rate User B in the following Skills</h3>

            <hr>
        <label ><strong>Time Management</strong></label>
        <br>
        <br>
        <input type="radio"  name="tmscore" value="tmvpoor" />
        Very Poor
        <input type="radio"  name="tmscore" value="tmpoor"/>
        Poor
        <input type="radio"  name="tmscore" value="tmsat" />
        Satisfactory
        <input type="radio"  name="tmscore" value="tmgood"/>
        Good
        <input type="radio"  name="tmscore" value="tmvgood" />
        Very Good

        <br>

       <button onclick="myFunction()" class="button">Submit</button>


        </fieldset>
    </form>

    <h2>User B New Score </h2>

    <p id="result"></p>