使用Javascript

时间:2018-04-03 21:27:02

标签: javascript input radio checked

我必须从10个不同的问题中算出正确的答案。 这些问题是这样制定的:

<input type='radio' name='question1'>answer wrong<br>
<input type='radio' name='question1' value='correct'>answer correct<br>
<input type='radio' name='question2'>answer wrong<br>
<input type='radio' name='question2' value='correct'>answer correct<br>

每次回答问题时都会运行此脚本:

    var input = document.getElementsByTagName("input")
for (var i=0;i<input.length;i++) {
if (input[i].value=="correct") {
    if (input[i].checked==true){
        correct++
    }
}
console.log(correct)
}

出于某种原因,在正确回答一个问题后,计数器将继续添加1 var correct 对于之后给出的每个答案,即使答案错误或根本没有检查。如果正确回答了2个问题,那么在此之后每个回答的问题将继续增加2个,依此类推。

2 个答案:

答案 0 :(得分:1)

快速执行此操作的方法是使用querySelectorAll获取所有正确检查的答案:

document.querySelectorAll('input[type=radio][value=correct]:checked').length
  • input我们只想查看输入
  • [type=radio]输入必须是广播按钮
  • [value=correct]广播必须具有正确
  • 的值
  • :checked 正确广播必须选中

这是一个有效的例子:

&#13;
&#13;
Array.from(document.querySelectorAll('input[type=radio]')).forEach(item => {
  item.addEventListener('click', e => {
    let correct = document.querySelectorAll('input[type=radio][value=correct]:checked').length
    console.log(correct)
  })
})
&#13;
<input type='radio' name='question1'>answer wrong<br>
<input type='radio' name='question1' value='correct'>answer correct<br>
<input type='radio' name='question2'>answer wrong<br>
<input type='radio' name='question2' value='correct'>answer correct<br>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

它正在计算任何时候的正确答案,你只是将所有正确的答案添加到一个永不复位的变量。

有很多方法可以做到这一点。您可以在每次检查所有答案时重置计数器变量,最后检查有多少是正确的。

var input = document.getElementsByTagName("input")
for (var i=0;i<input.length;i++) {
if (input[i].value=="correct") {
    if (input[i].checked==true){
        correct++
    }
}
console.log(correct);
if(i==input.length)correct = 0;
}

if(correct == 10){console.log("player got 100%");}