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 Using For Loops with Arrays

Josh Bennett
Josh Bennett
15,258 Points

It is only printing the last item in the array.

My code looks the same as in the video, I think. I've checked it repeatedly but...no dice.

Here's my code

var playList = [
  'I Did It My Way',
  'Respect',
  'Imagine',
  'Born to Run',
  'Louie Louie',
  'Maybellene'
];

function print(message) {
  document.write(message);
}


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

printList(playList)
Austin Whipple
Austin Whipple
29,687 Points

Hey Josh, I updated your question with some code block markup. Helps readability a bit.

Julie Myers
Julie Myers
7,627 Points

Here is the coding that works. The main issue is you were missing the plus operator after listHTML inside the for loop.

var playList = [
  'I Did It My Way',
  'Respect',
  'Imagine',
  'Born to Run',
  'Louie Louie',
  'Maybellene'
];

function print(message) {
   console.log(message);
}


function printList (list) {
    var listHTML = '<ol>';
    for (var i = 0; i < list.length; i++) {
      listHTML += '<li>' + list[i] + '</li>';
    }
    listHTML += '</ol>';
    print(listHTML);
}

printList(playList);

3 Answers

akak
akak
29,444 Points

You forgot a plus sign in your loop:

for ( var i = 0; i < list.length; i += 1 ) {
      listHTML = '<li>' + list[i] + '</li>'; // it should be listHTML +='<li> ...rest of the code
    }

Without it you were constantly overriding previous value and that's why only the last one is printed out. Cheers.

Austin Whipple
Austin Whipple
29,687 Points

So your code looks like it should run fine except for the missing semicolon at the end of the last line. Check out this other Community conversation about a similar issue. Might help.