JavaScript closures can be kind of weird. The way a closure works within a loop is a fairly common "gotcha" because it doesn't work in the way that it intuitively feels like it should.
Take the following block of code:
for (var i = 0; i < 5; i++) { var button = document.createElement("button"); button.innerHTML = "Button #" + (i + 1); button.onclick = function() { alert("You clicked on " + button.innerHTML + "!"); }; document.body.appendChild(button); document.body.appendChild(document.createElement('br')); }
What does that do? Read More to find out.