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 Useful Array Methods

Neil Nathan
seal-mask
.a{fill-rule:evenodd;}techdegree
Neil Nathan
Front End Web Development Techdegree Student 9,347 Points

Behaviour 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
Brodey Newman
10,962 Points

Hello 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
Mark Pryce
8,804 Points

Calling 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.