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

Ron Ziser
Ron Ziser
3,244 Points

Quiz Not Working

as far as I can tell I've replicated the code in the video exactly and nothing shows up in the browser but the title, any suggestions? (fyi i've tested and the js file is linking fine with the index file (using other Javascript code). this is the code I've 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 correct = []; var wrong = [];

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

function buildList(arr) { var listHTML = '<ol>'; for (var i = 0; i < arr.length; i += 1) { listHTML += '<li>' + arr[i] + '</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); htm; += '<h2>You got these questions wrong:</h2>'; html += buildList(wrong); print(html);

3 Answers

Here is a snapshot of your code that works. Can you post a snapshot or what the console says? The errors in the console should walk you through debugging.

Ron Ziser
Ron Ziser
3,244 Points

ok I copy and pasted the code you posted and it finally works! (really not sure what the difference was?).

many thanks for your help!

Ron Ziser
Ron Ziser
3,244 Points

http://port-80-lyodvtqzu9.treehouse-app.com/

Incase its of interest to anyone, heres a a snapshot of the code that didn't work. I could find a way to analyse it with chrome dev tools when i clicked on 'console' it says there are two errors but didn't allow me to review that Javascript.

You have two errors:

1) You declare outputDIV but then use outputDiv

2) You have htm; instead of html here:

htm; += '<h2>You got these questions wrong:</h2>';

Did you check the console?

Ron Ziser
Ron Ziser
3,244 Points

Thanks Kris, I made those changes but still not working unfortunately.

Ron Ziser
Ron Ziser
3,244 Points

It does run the question prompts for some reason (if i delete the last section) so maybe thats a clue? I cant see any mistakes here however.

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);

update : with this code the question prompts are running now but they run through twice for some reason and the answers are not displayed in the end.

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);

I checked it in the console, you missed a semicolon after the first line. Happy Coding!

Ron Ziser
Ron Ziser
3,244 Points

thanks, but still doesn't work!