Using a closure from a timer interval.

from jquery ninja book

by dandoyon

HTML

<ul id="results"></ul>

<div id="box" style="position:absolute;">Box!</div>

CSS

#results li.pass { color: green; }
#results li.fail { color: red; }

JavaScript

function assert(value, desc) {
    var li = document.createElement("li");
    li.className = value ? "pass" : "fail";
    li.appendChild(document.createTextNode(desc));
    document.getElementById("results").appendChild(li);
}

var elem = document.getElementById("box");
var count = 0;
var timer = setInterval(function() {
    if (count < 100) {
        elem.style.left = count + "px";
        count++;
    } else {
        assert(count == 100, "Count came via a closure, accessed each step.");
        assert(timer, "The timer reference is also via a closure.");
        clearInterval(timer);
    }
}, 10);