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

Alex Lang
Alex Lang
1,110 Points

What did I do wrong?

var html = '';
var red;
var green;
var blue;
var rgbColor;
function colors(red, green, blue) {
    Math.floor(Math.random() * 256 );
}

for( var i = 1; i <= 10; i += 1 ) {
    colors();
rgbColor = 'rgb(' + red + ',' + green + ',' + blue + ')';
html += '<div style="background-color:' + rgbColor + '"></div>';

}
document.write(html);
Rich Donnellan
Rich Donnellan
Treehouse Moderator 25,634 Points

Question updated with code formatting. Check out the Markdown Cheatsheet below the Add an Answer submission for syntax examples.

3 Answers

Antonio De Rose
Antonio De Rose
20,856 Points

can you please you the code formatter, and please use proper indentation, it is really hard to find, the issue.

how would the code, come in a nicer format, when you post a question is, like if the question comes from the background of javascript, see example

put 3 backticks, followed by the programming language, this case javascript

end with 3 backticks

document.write('hello');

click on the markdown cheatsheet link below, to get understanding.

var html = '';
// red, green, and blue aren't being used so remove them
var red;
var green;
var blue;
var rgbColor;

function colors(red, green, blue) {  //red, green, and blue are like variables that you can use inside your function scope. No where in your function are you using them, therefore you should remove them.

    Math.floor(Math.random() * 256 ); // you need a  return statement otherwise this function would give back nothing.
}

for( var i = 1; i <= 10; i += 1 ) {
    colors(); // calling this function would give back nothing because you don't have a return statement. Even if you had a return statement this would output 1 random number, e.g. 145. So there's no reason you having that line of code there.

    rgbColor = 'rgb(' + red + ',' + green + ',' + blue + ')'; // finally red, green, and blue should be replaced with your colors function.

    html += '<div style="background-color:' + rgbColor + '"></div>';

}
document.write(html);

so it should look like this

var html = '';
var rgbColor;

function colors() {
    return Math.floor(Math.random() * 256 );
}

for( var i = 1; i <= 10; i += 1 ) {
  rgbColor = 'rgb(' + colors() + ',' + colors() + ',' + colors() + ')';
  html += '<div style="background-color:' + rgbColor + '"></div>';

}
document.write(html);
Lucas Guimarães
Lucas Guimarães
Front End Web Development Techdegree Student 3,900 Points

I think there is one way much closer than yours

/// javascript

var html = ''; var red; var green; var blue; var rgbColor; function colors(red, green, blue) { red = Math.floor(Math.random() * 256 ); green = Math.floor(Math.random() * 256 ); blue = Math.floor(Math.random() * 256 ); return red, green, blue; }

for( var i = 1; i <= 10; i += 1 ) {

rgbColor = 'rgb(' + colors(red) + ',' + colors(green) + ',' + colors(blue) + ')'; html += '<div style="background-color:' + rgbColor + '"></div>';

} document.write(html); document.write("<h1> This is your last rgbColor " + rgbColor + "</h1>")

///