我想创建一个在线测试,但是我的第一个问题出了问题。下面的代码没有工作并返回"你的分数为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;
答案 0 :(得分:2)
立即原因导致事情无法正常工作。
您可以在解析和呈现元素之前设置总计的值。 HTML将从上到下进行解析。因此,您希望将脚本移到底部。
如果您需要在标记中设置选项框的值,请使用checked而不是value属性。
你应该有类似下面的代码段。
<!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;
答案 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
。
<!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;
答案 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());
}
希望它有所帮助!