Javascript - 我找不到我的错误。(单选按钮)

时间:2014-09-29 22:33:13

标签: javascript html button radio

我想创建一个在线测试,但是我的第一个问题出了问题。下面的代码没有工作并返回"你的分数为0"即使检查了正确的答案。



<!DOCTYPE html>
<html>sssdsdsdsd

<head>Mypage.com
<title> myPage</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<script>
var total=0;
var yourmark="your score is  ";

if(document.getElementById('q12').checked) {
  total=total+1;
}else {
 total=total;
}

</script>

<script>
function showScore() {
    alert(yourmark + total  );
}
</script>
</br>
<input type="radio" name="question1" id="q11" value="false">Question 1-first option <br>
<input type="radio" name="question1" id="q12"  value="true" > Question 1- second option<br>
<input type="radio" name="question1" value="false">Question 1- third option<br>



<button onclick="showScore()">Show my score</button>



</body>
</html>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

立即原因导致事情无法正常工作。

  1. 您可以在解析和呈现元素之前设置总计的值。 HTML将从上到下进行解析。因此,您希望将脚本移到底部。

  2. 如果您需要在标记中设置选项框的值,请使用checked而不是value属性。

  3. 你应该有类似下面的代码段。

    &#13;
    &#13;
    <!DOCTYPE html>
    <html>sssdsdsdsd
    
    <head>Mypage.com
    <title> myPage</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    
    <script>
    function showScore() {
        alert(yourmark + total  );
    }
    </script>
    </br>
    <input type="radio" name="question1" id="q11">Question 1-first option <br>
    <input type="radio" name="question1" id="q12"  checked="true" > Question 1- second option<br>
    <input type="radio" name="question1">Question 1- third option<br>
    
    
    
    <button onclick="showScore()">Show my score</button>
    
    
    <script>
    var total=0;
    var yourmark="your score is  ";
    
    if(document.getElementById('q12').checked) {
      total=total+1;
    }else {
     total=total;
    }
    
    </script>
    
    
    </body>
    </html>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:1)

这个区块:

var total=0;
var yourmark="your score is  ";

if(document.getElementById('q12').checked) {
  total=total+1;
}else {
 total=total;
}

在页面的开头运行,因为它正在加载。此时total实际上是0。当您点击该按钮时,您所要求的就是更改选项后总共. At no point are you updating the value of总数的值。

PM 77-1 建议的最简单的解决方案是在函数内部移动计算,以便每次需要更新的答案时计算total

&#13;
&#13;
<!DOCTYPE html>
<html>sssdsdsdsd

<head>Mypage.com
<title> myPage</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<script>
function showScore() {
  var total=0;
  var yourmark="your score is  ";

  if(document.getElementById('q12').checked) {
    total=total+1;
  }else {
   total=total;
  }
  
  alert(yourmark + total  );
}
</script>
</br>
<input type="radio" name="question1" id="q11" value="false">Question 1-first option <br>
<input type="radio" name="question1" id="q12"  value="true" > Question 1- second option<br>
<input type="radio" name="question1" value="false">Question 1- third option<br>



<button onclick="showScore()">Show my score</button>



</body>
</html>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

http://codepen.io/anon/pen/vgJuA

因此,将var total = 0作为函数外的全局变量并创建函数checkAnswer()。 您的javascript部分现在将是:

var total = 0;    
function checkAnswer() {
    //total is the global Variable for the score
    if (document.getElementById('q12').checked) {
        total = total + 1;
    } else {
        total = total;
    }
    return total;    
}

function showScore() {
    var yourmark = "your score is  ";
    alert(yourmark + checkAnswer());
}

希望它有所帮助!