Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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

Raphael Chen
seal-mask
.a{fill-rule:evenodd;}techdegree
Raphael Chen
Front End Web Development Techdegree Student 8,751 Points

Not able to print out the correct and wrong questions

I'm not sure why but I have done exactly the same approach as the one shown in the solution video but the outcome of the code did not match.

The only issue was how come the correct and wrong questions printed out are only "H" and not the whole string.

This was the code I have written:

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 print(message) {
  var ouputDiv = document.getElementById("output");
  ouputDiv.innerHTML = message;
}

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


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>You got these questions correct: </h2>";
html += buildList(correct);
html += "<h2>You got these questions wrong: </h2>";
html += buildList(wrong);
print(html); 

2 Answers

You have:

 listHTML += '<li>' + array[i][0] + '</li>';

The [0] returns the first character of array[i]. In all cases 'H'. The line should be:

 listHTML += '<li>' + array[i] + '</li>';
Raphael Chen
seal-mask
.a{fill-rule:evenodd;}techdegree
Raphael Chen
Front End Web Development Techdegree Student 8,751 Points

Hi Kris Nikolaisen,

Thank you for pointing that out. Just wondering how do you post the codes in that way in the previous post?

I was trying to do that when I wanted to post out the question, however was not sure of how it was done.

Click the Markdown Cheatsheet below. That shows all the code you need. But basically three back ticks ` (key to the left of one) folowed by the language name. Then close your code by three more back ticks.