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 trialNeil Nathan
Front End Web Development Techdegree Student 9,347 PointsBehaviour of code not as per exercise
The exact same code does not behave the same way as shown in the exercise.
when typing 'list' the list of items does not display on the page until after 'quit' is typed.
var inStock = [ 'apples', 'eggs', 'milk', 'cookies', 'cheese', 'bread', 'lettuce', 'carrot', 'broccoli', 'pizza', 'potato', 'crackers', 'onion', 'tofu', 'frozen dinner', 'cucumber']; var search;
function print(message) { document.write( '<p>' + message + '</p>'); }
while (true) { search = prompt("Search for a product in our store. Type 'list' to show all of the produce and 'quit' to exit"); search = search.toLowerCase(); if ( search === 'quit') { break; } else if ( search === 'list' ) { print( inStock.join(', ') ); } else { if ( inStock.indexOf( search ) > -1 ) { print( 'Yes, we have ' + search + ' in the store.'); } else { print( search + ' is not in stock.'); } } }
FYI I am using the sublime editor and not workspaces.
1 Answer
Brodey Newman
10,962 PointsHello Neil!
I took a look at your program and noticed you are only breaking the 'while' loop when a user types 'quit' into the prompt.
Take a look at the edited code below, which seems to work fine for me.
function print(message) {
document.write( '<p>' + message + '</p>');
}
var inStock = [ 'apples', 'eggs', 'milk', 'cookies', 'cheese', 'bread', 'lettuce', 'carrot', 'broccoli', 'pizza', 'potato', 'crackers', 'onion', 'tofu', 'frozen dinner', 'cucumber'];
var search;
while (true) {
search = prompt("Search for a product in our store. Type 'list' to show all of the produce and 'quit' to exit");
search = search.toLowerCase();
if ( search === 'quit') {
break;
} else if ( search === 'list' ) {
print( inStock.join(', ') );
break;
} else {
if ( inStock.indexOf( search ) > -1 ) {
print( 'Yes, we have ' + search + ' in the store.');
break;
} else {
print( search + ' is not in stock.');
break;
}
}
Mark Pryce
8,804 PointsMark Pryce
8,804 PointsCalling out break after every statement doesn't seem to work either, I do believe it is down to the browser behaviour, with a few tweaks I managed to get the program to work correctly in IE .. sorry Edge which originally showed the same behaviour, it seems chrome handles it differently, worth an investigation though.