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 Simplify Repetitive Tasks with Loops The Refactor Challenge

Mahfuzur Rahman
Mahfuzur Rahman
3,204 Points

document.write() inside for loop

if I put document.write(html); inside for loop I get way too many colored divs. But if I put document.write outside for loop it's okay. I get only 10

var html = ''; var red; var green; var blue; var rgbColor;

for (i=0; i<10; i++) { red = Math.floor(Math.random() * 256 ); green = Math.floor(Math.random() * 256 ); blue = Math.floor(Math.random() * 256 ); rgbColor = 'rgb(' + red + ',' + green + ',' + blue + ')'; html += '<div style="background-color:' + rgbColor + '"></div>';

document.write(html);

}

Its because of

html +=

that there are too many blocks when you use

document.write(html);

inside the loop.

either keep it outside the loop effectively writing it once it collected all the html OR just use

html =

without the

+

and you can write from within the loop

1 Answer

Steven Parker
Steven Parker
231,275 Points

If you put it inside the loop, you won't need to accumulate in the "html" varable and replace it:

document.write('<div style="background-color:' + rgbColor + '"></div>');