[英]Getting wrong total in javascript
我正在嘗試使用html和JavaScript准備在線考試頁面,您可以在下面看到代碼:我有2個問題:問題1:我要在下面顯示此在線考試頁面代碼的計時器:a)考試應在固定時間完成如果考官無法及時完成考試,則他應收到有關時間到的警告消息,並且必須顯示此計時器代碼下方的問題2代碼的總計最后一頁。
Timer Code:
var tim;
var showscore=Math.round(correct/questions.length*100);
var min = 1;
var sec = 60;
var f = new Date();
function starttime() {
showtime();
document.getElementById("starttime").innerHTML = "<h4>You started your Exam at " + f.getHours() + ":" + f.getMinutes()+"</h4>";
}
function showtime() {
if (parseInt(sec) > 0) {
sec = parseInt(sec) - 1;
document.getElementById("showtime").innerHTML = "Your Left Time is :"+min+" Minutes :" + sec+" Seconds";
tim = setTimeout("showtime()", 1000);
}
else {
if (parseInt(sec) == 0) {
min = parseInt(min) - 1;
document.getElementById("showtime").innerHTML = "Your Left Time is :"+min+" Minutes :" + sec+" Seconds";
if (parseInt(min) == 0) {
clearTimeout(tim);
alert("Time Up");
/*_("test_status").innerHTML = "Test Completed";
test.innerHTML = "<h2>You got "+correct+" of "+questions.length+" questions correct</h2>";
test.innerHTML = "<h2>You got "+showscore +"% out of "+questions.length+"</h2>";
test.innerHTML = "<button onclick='EndExam()'>End the Exam</button>";
pos = 0;
correct = 0;
clearTimeout(tim);
document.getElementById("endtime").innerHTML = "You Finished exam at Time is :"+min+" Minutes :" + sec+" Seconds";
document.getElementById("starttime").style.display += 'none';
document.getElementById("showtime").style.display += 'none';
//document.getElementById("showtime").style.display += 'block';
return false;*/
window.location.href = "Loginpage.htm";
}
else {
sec = 60;
document.getElementById("showtime").innerHTML = "Your Left Time is :" + min + " Minutes :" + sec + " Seconds";
tim = setTimeout("showtime()", 1000);
}
}
}
}
問題2:但是在計數方面存在問題,當我嘗試回答2個問題,而接下來的2個問題卻未標記或選擇單選選項時,總共顯示了4個問題,那么總數顯示是錯誤的。
**wrong answer :You got 3 of 4 questions correct
correct answer: You got 2 of 4 questions correct**
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
div#test{ border:#000 1px solid; padding:10px 40px 40px 40px; }
</style>
</head>
<body>
<h2 id="test_status"></h2>
<div id="test"></div>
<script>
var pos = 0, test, test_status, questions, choice, choices, chA, chB, chC, correct = 0;
var questions = [
[ "What is 10 + 4?", "12", "14", "16", "B" ],
[ "What is 20 - 9?", "7", "13", "11", "C" ],
[ "What is 7 x 3?", "21", "24", "25", "A" ],
[ "What is 8 / 2?", "10", "2", "4", "C" ]
];
function _(x){
return document.getElementById(x);
}
function renderQuestion(){
test = _("test");
if(pos >= questions.length){
test.innerHTML = "<h2>You got "+correct+" of "+questions.length+" questions correct</h2>";
_("test_status").innerHTML = "Test Completed";
pos = 0;
correct = 0;
return false;
}
_("test_status").innerHTML = "Question "+(pos+1)+" of "+questions.length;
question = questions[pos][0];
chA = questions[pos][1];
chB = questions[pos][2];
chC = questions[pos][3];
test.innerHTML = "<h3>"+question+"</h3>";
test.innerHTML += "<input type='radio' name='choices' value='A'> "+chA+"<br>";
test.innerHTML += "<input type='radio' name='choices' value='B'> "+chB+"<br>";
test.innerHTML += "<input type='radio' name='choices' value='C'> "+chC+"<br><br>";
test.innerHTML += "<button onclick='checkAnswer()'>Submit Answer</button>";
}
function checkAnswer(){
choices = document.getElementsByName("choices");
for(var i=0; i<choices.length; i++){
if(choices[i].checked){
choice = choices[i].value;
}
}
if(choice == questions[pos][4]){
correct++;
}
pos++;
renderQuestion();
}
window.addEventListener("load", renderQuestion, false);
</script>
</body>
</html>
誰能幫助解決計時器問題?
這回答了兩個問題之一。 我聲稱問題2未重設后選擇答案,因此它也為問題4的答案贏得贊譽。這應該可以解決:
function checkAnswer(){
choices = document.getElementsByName("choices");
choice='Z'; //here is the new code, avoid matches based on earlier
for(var i=0; i<choices.length; i++){
if(choices[i].checked){
choice = choices[i].value;
}
}
if(choice == questions[pos][4]){
correct++;
}
pos++;
renderQuestion();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.