javascript - 我想使用 JS/HTML 明智地计算我的调查部分的分数?
问题描述
我正在使用 JS/HTML 创建一项调查,并希望明智地计算调查部分的分数和百分比,就像一个部分有 3 个问题而另一部分有 4 个问题,所以应该以这种方式计算分数和百分比。我正在给出代码这是我创建的,但它只适用于一个部分。表单.html
function displayRadioValue() {
var ele = document.getElementsByTagName('input');
let total = 0
let res = ''
let totalNumQuestions = 0
for (i = 0; i < ele.length; i++) {
if (ele[i].type = "radio") {
if (ele[i].checked) {
totalNumQuestions++
total += parseFloat(ele[i].value)
res += ele[i].name + " Value: " + ele[i].value + "<br>";
}
}
}
res += "Total: " + total + "<br>"
res += "Percentage: " + ((total / (totalNumQuestions * 3)) *
100).toFixed(2) + "%"
document.getElementById("result").innerHTML = res
}
`
<p>
Select a radio button and click on Submit.
</p>
<h2>Section 1</h2>
<h3>question 1: </h3>
<input type="radio" name="question1" value="1">1
<input type="radio" name="question1" value="2">2
<input type="radio" name="question1" value="3">3
<br> question 2:
<input type="radio" name="question2" value="1">1
<input type="radio" name="question2" value="2">2
<input type="radio" name="question2" value="3">3
<br> question 3:
<input type="radio" name="question3" value="1">1
<input type="radio" name="question3" value="2">2
<input type="radio" name="question3" value="3">3
<br>
<h2>Section 2</h2>
<h3>question 1: </h3>
<input type="radio" name="question1" value="1">1
<input type="radio" name="question1" value="2">2
<input type="radio" name="question1" value="3">3
<br> question 2:
<input type="radio" name="question2" value="1">1
<input type="radio" name="question2" value="2">2
<input type="radio" name="question2" value="3">3
<br> question 3:
<input type="radio" name="question3" value="1">1
<input type="radio" name="question3" value="2">2
<input type="radio" name="question3" value="3">3
<br> question 4:
<input type="radio" name="question4" value="1">1
<input type="radio" name="question4" value="2">2
<input type="radio" name="question4" value="3">3
<button type="button" onclick="displayRadioValue()">
Submit
</button>
<br>
<div id="result"></div>
解决方案
这是适合您的完整工作代码。首先,您需要each
单独包装部分,以便我们也div
可以调用它们separately
calculation
您可以使用querySelecterAll
method 和 useforEach
来获取每个部分按钮每个部分checked
的所有值。radio
存储每个部分total
并percentage
分别显示在section
.
要获得百分比,我们需要将总数除以totalQuestions
100,然后再除以 100 并使用toFixed()
函数来获得实际percentage
的 in decimals
。
您的 HTML 中也需要一些HTML
修复,我也已修复。
现场工作演示:
function displayRadioValue() {
let section1 = document.querySelectorAll('.section-1 > input[type="radio"]')
let section2 = document.querySelectorAll('.section-2 > input[type="radio"]')
let section1Total = 0
let section2Total = 0
let section1Question = 0
let section2Question = 0
let section1Res = document.querySelector('.section-1-results')
let section2Res = document.querySelector('.section-2-results')
let result1 = ''
let result2 = ''
//Section 1
section1.forEach(function(radio, index) {
if (radio.checked) {
section2Question++
section1Total += +radio.value
}
})
//Section 2
section2.forEach(function(radio, index) {
if (radio.checked) {
section1Question++
section2Total += +radio.value
}
})
//Section 1
result1 += "<b>Results:</b><br>"
result1 += "Total: " + section1Total + "<br>"
result1 += "Percentage: " + ((section1Total / (section2Question * 3)) * 100).toFixed(2) + "%"
section1Res.innerHTML = result1
//Section 2
result2 += "<b>Results:</b><br>"
result2 += "Total: " + section2Total + "<br>"
result2 += "Percentage: " + ((section2Total / (section2Question * 3)) * 100).toFixed(2) + "%"
section2Res.innerHTML = result2
}
<p>
Select a radio button and click on Submit.
</p>
<div class="section-1">
<h2>Section 1</h2>
question 1:
<input type="radio" name="question1" value="1">1
<input type="radio" name="question1" value="2">2
<input type="radio" name="question1" value="3">3
<br> question 2:
<input type="radio" name="question2" value="1">1
<input type="radio" name="question2" value="2">2
<input type="radio" name="question2" value="3">3
<br> question 3:
<input type="radio" name="question3" value="1">1
<input type="radio" name="question3" value="2">2
<input type="radio" name="question3" value="3">3
</div>
<br>
<div class="section-1-results"></div>
<div class="section-2">
<h2>Section 2</h2>
question 1:
<input type="radio" name="question4" value="1">1
<input type="radio" name="question4" value="2">2
<input type="radio" name="question4" value="3">3
<br> question 2:
<input type="radio" name="question5" value="1">1
<input type="radio" name="question5" value="2">2
<input type="radio" name="question5" value="3">3
<br> question 3:
<input type="radio" name="question6" value="1">1
<input type="radio" name="question6" value="2">2
<input type="radio" name="question6" value="3">3
<br> question 4:
<input type="radio" name="question7" value="1">1
<input type="radio" name="question7" value="2">2
<input type="radio" name="question7" value="3">3
</div>
<br>
<div class="section-2-results"></div>
<br>
<button type="button" onclick="displayRadioValue()">
Submit
</button>
推荐阅读
- laravel - 如何使用相关模型操作 Laravel 集合并返回自定义实例?
- swift - 如何构造 5x5 矩阵以在 Swift 中应用为颜色矩阵?
- java - 如何解决在四个随机生成的数字中找到最小数字时偶尔出现的错误答案
- python - 最适合这个问题的机器学习算法?
- c# - Xamarin.Forms 中的死锁
- java - Java/Spring JDBC:批量插入 2 个表:从第 1 批插入获取第 2 个表所需的 FK ID
- javascript - 在回调中键入事件的正确方法
- azure - 无法连接到在 Azure 应用服务上运行的 KAFKA
- google-apps-script - HTML 服务不会在 V8 运行时打开侧边栏
- postgresql - FusionAuth 启动 RejectedExecutionException