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 Data Using Objects The Student Record Search Challenge Solution

if else problem

its not working.

var message = '';
var student;
var search;

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

function getStudentReport( student ) {
  var report = '<h2>Student: ' + student.name + '</h2>';
  report += '<p>Track: ' + student.track + '</p>';
  report += '<p>Points: ' + student.points + '</p>';
  report += '<p>Achievements: ' + student.achievements + '</p>';
  return report;
}


while ( true ) {
  search = prompt("Search students recors: type a name [Jody] (or type 'quit' to end)");
  if ( search === null || search.toLowerCase() === 'quit' ) {
    break;
  }     
  for (var i = 0; i < students.length; i += 1) {
    student = students[i];
/* not working when search === student.name */
    if ( search === student.name ) {
      message = getStudentReport ( student );
      print(message);
    }
  }
}

But when i change the search === student.name to students.name === search. its working. Can u explain why it not working at the first.

var message = '';
var student;
var search;

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

function getStudentReport( student ) {
  var report = '<h2>Student: ' + student.name + '</h2>';
  report += '<p>Track: ' + student.track + '</p>';
  report += '<p>Points: ' + student.points + '</p>';
  report += '<p>Achievements: ' + student.achievements + '</p>';
  return report;
}


while ( true ) {
  search = prompt("Search students recors: type a name [Jody] (or type 'quit' to end)");
  if ( search === null || search.toLowerCase() === 'quit' ) {
    break;
  }     
  for (var i = 0; i < students.length; i += 1) {
    student = students[i];
/* working when student.name === search */
    if ( student.name === search ) {
      message = getStudentReport ( student );
      print(message);
    }
  }
}

but if u run the program.. the first 1 is not showing any prompt dialogue box. but the 2nd is showing

Andrew Robinson
Andrew Robinson
16,372 Points

I've just tested both and they do both prompt for an input, I ran it in Google Chrome, try clearing your cache before running it also.

1 Answer

Andrew Robinson
Andrew Robinson
16,372 Points

The order of the if statement isn't the problem, I believe the problem might be that you're not making sure that both arguments are the same case before checking if they're equal.

Try changing the if statement to:

if (student.name.toLowercase() === search.toLowercase()) {
}

You did it correctly for quit just not for the student name.