Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript JavaScript Loops, Arrays and Objects Tracking Multiple Items with Arrays Build a Quiz Challenge, Part 2 Solution

Daniel Gzel
Daniel Gzel
2,927 Points

so I was working on this for some time. UNDEFINED

Hello, so I was working on this for some time. Figured out how to create new variables to store correct/incorrect answers then I have create for loop with display order. BUT... my code still printed out UNDEFINED, so I loaded up solution with hope of finding an answer, and I realized that Dave did it "slightly" different. I have changed most of my code but still there is the same problem :( please find code below, im giving up:

var questions = [ ['How many states are in the United States?', 50], ['How many continents are there?', 7], ['How many legs does an insect have?', 6] ]; var correctAnswers = 0; var question; var answer; var response; var html = ""; var correct = []; var wrong = [];

function buildList(arr) { var listHTML = "<ol>"; for (var y = 0; y < arr.length; y+=1) { listHTML += "<li>" + arr[i] + "</li>" } listHTML += "</ol>" return listHTML; }

function print(message) { document.write(message); }

for (var i = 0; i < questions.length; i += 1) { question = questions[i][0]; answer = questions[i][1]; response = prompt(question); response = parseInt(response); if (response === answer) { correctAnswers += 1; correct.push(question); } else wrong.push( question );

}

html = "You got " + correctAnswers + " question(s) right." html += "<h2>asd</h2>"; html += buildList(correct); html += "asdasd wrong"; html += buildList(wrong);

print(html);

1 Answer

Steven Parker
Steven Parker
231,268 Points

The loop is using "y" as the step variable, but the index into the array is using "i":

  for (var y = 0; y < arr.length; y += 1) {
    listHTML += "<li>" + arr[i] + "</li>";    // <-- try arr[y] instead
  }