简单的问答游戏 JavaScript

Simple Quiz Game JavaScript

我正在学习。你能帮帮我吗,为什么我没有得到正确的输出。这是我的代码:

//ask questions
var quiz = [
  ["When is Bulgaria established?", 681],
  ["What year was it before 16 years?", 2000],
  ["When does WWII ends?", 1945]
];

//variables
var answer = [];
var correct = [];
var wrong = [];
var correctAns = 0;
var wrongAns = 0;
var oList = "<ol>";

//function to print the result in ordered list
function printResult(result){
  for(var j = 0; j < result.length; j++){
    oList += "<li>" + result[i] + "</li>";
  }
  oList += "</ol>";
  return oList;
}

function print(message) {
  document.getElementById('output').innerHTML = message;
}



//looping, adding correct and wrong answeres
for(var i = 0; i < 3; i++) {
  answer[i] = prompt(quiz[i][0]);
  if(parseInt(answer[i]) == quiz[i][1]){
    correct.push(quiz[i][0]);
    correctAns++;
  } else {
    wrong.push(quiz[i][0]);
    wrongAns++;
  }
}


//print logic
if(correct.length < 1 || correct == undefined){
  print("You did not guess any of the quiestions!");
} else if (correct.length >= 1){
  print("You have guessed " + correctAns + " questions.");
  print(printResult(correct));
  print("You have " + wrongAns + " wrong answeres.");
  if(wrongAns > 0){
    print(printResult(wrong));
  }
}

这段代码我看了一遍又一遍,我还是不明白为什么我会得到 undefined 结果。在调试器中,在循环之后我检查了我的变量,一切似乎都正常。

在您的 printResult 函数中,您使用的是 var i 而不是 j,

另外你最好使用 innerHtml+=message;

//ask questions
var quiz = [
  ["When is Bulgaria established?", 681],
  ["What year was it before 16 years?", 2000],
  ["When does WWII ends?", 1945]
];

//variables
var answer = [];
var correct = [];
var wrong = [];
var correctAns = 0;
var wrongAns = 0;
   

//function to print the result in ordered list
function printResult(result){
//HERE:
 var oList = "<ol>";
  for(var j = 0; j < result.length; j++){
    oList += "<li>" + result[j] + "</li>";
  }
  oList += "</ol>";
  return oList;
}

function print(message) {
  document.getElementById('output').innerHTML += message;
}



//looping, adding correct and wrong answeres
for(var i = 0; i < 3; i++) {
  answer[i] = prompt(quiz[i][0]);
  if(parseInt(answer[i]) == quiz[i][1]){
    correct.push(quiz[i][0]);
    correctAns++;
  } else {
    wrong.push(quiz[i][0]);
    wrongAns++;
  }
}


//print logic
if(correct.length < 1 || correct == undefined){
  print("You did not guess any of the quiestions!");
} else if (correct.length >= 1){
  print("You have guessed " + correctAns + " questions.");
  print(printResult(correct));
  print("You have " + wrongAns + " wrong answeres.");
  if(wrongAns > 0){
    print(printResult(wrong));
  }
}
<div id="output">
</div>

你的主要错误是使用 i 而不是 j:

for(var j = 0; j < result.length; j++){
   oList += "<li>" + result[j] + "</li>";// here was i before
}

基本上你有三个问题。

  • 重用oList,变量应该在内部声明,只在printResult.

  • 中使用
  • printResult 内部,使用 i,其中 j 已被使用,并且

  • print,您用新内容替换了实际内容。

只是一个带有用于计数的变量名的小提示。最好总是从 i 而不是 j 开始,然后继续使用字母表中的字母。

var quiz = [["When is Bulgaria established?", 681], ["What year was it before 16 years?", 2000], ["When does WWII ends?", 1945]],
    answer = [],
    correct = [],
    wrong = [],
    correctAns = 0,
    wrongAns = 0;

//function to print the result in ordered list
function printResult(result) {
    var oList = "<ol>"; // !!! move variable inside of the function
    for (var j = 0; j < result.length; j++) {
        oList += "<li>" + result[j] + "</li>"; // !!! use j indstead if i
    }
    oList += "</ol>";
    return oList;
}

function print(message) {
    document.getElementById('output').innerHTML += message; // !!! append message
}

//looping, adding correct and wrong answeres
for (var i = 0; i < 3; i++) {
    answer[i] = prompt(quiz[i][0]);
    if (parseInt(answer[i]) == quiz[i][1]) {
        correct.push(quiz[i][0]);
        correctAns++;
    } else {
        wrong.push(quiz[i][0]);
        wrongAns++;
    }
}

//print logic
if (correct.length < 1 || correct == undefined) {
    print("You did not guess any of the quiestions!");
} else if (correct.length >= 1) {
    print("You have guessed " + correctAns + " questions.");
    print(printResult(correct));
    print("You have " + wrongAns + " wrong answeres.");
    if (wrongAns > 0) {
        print(printResult(wrong));
    }
}