根据用户评分进行问卷评分
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>
我是个菜鸟,所以请原谅我的错误。我正在尝试创建一个脚本,该脚本根据 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>