JavaScript JavaScript Loops, Arrays and Objects Simplify Repetitive Tasks with Loops The Refactor Challenge, Part 2

Peter Vanderlind de Oliveira
Peter Vanderlind de Oliveira
3,695 Points

Blank solution page on "The Refactor Challenge, Part 2"

Why doesn't my code work? I see no problem, but the browser shows a blank page.

Thanks.

var html = '';
var rgbColor;

function colorNum() {
    var numberOne = Math.floor(Math.random() * 256 );
    var numberTwo = Math.floor(Math.random() * 256 );
    var numberThree = Math.floor(Math.random() * 256 );
    var color = 'rgb(' + numberOne + "," + numberTwo + "," + numberThree + ")";

  }

for ( i = 0; i <= 10; i++) {
html += '<div style="background-color:' + colorNum + '"></div>';
}

document.write(html);

2 Answers

Steven Parker
Steven Parker
171,228 Points

I see three problems.

  • your function colorNum is missing a return statement
  • to invoke a function you must have parentheses after the name, even if it takes no arguments
  • an empty <div> might not be displayed by the browser, try putting something inside it
Peter Vanderlind de Oliveira
Peter Vanderlind de Oliveira
3,695 Points

Your first two tips solved the problem. I Guess I didn't really understand the purpose of the return statement.

Thanks, Steven.

The result code for those who need:

var html = '';
var rgbColor;

function colorNum() {
    var numberOne = Math.floor(Math.random() * 256 );
    var numberTwo = Math.floor(Math.random() * 256 );
    var numberThree = Math.floor(Math.random() * 256 );

    return 'rgb(' + numberOne + "," + numberTwo + "," + numberThree + ")";

  }

for ( i = 0; i <= 10; i++) {
html += '<div style="background-color:' + colorNum() + '"></div>';
}

document.write(html);