Для понимания, как-то так (стоит отметить, что это не правильные подходы):
<script type="text/javascript">
//show
window.onload = function() {
    var i = 0;
    (function(){
        if(++i <= 100) {
           document.getElementsByTagName('div')[0].style.height = i+'px';
           setTimeout(arguments.callee, 10);
        }
        else {
            alert('finished');
        }
    })();
};
</script>
<style type="text/css">
div {
    background: blue;
    position: absolute;
    width: 100px;
}
</style>
<div></div>
<script type="text/javascript">
//toggle
window.onload = function() {
    var elem = document.getElementById('div'), i = 0, j = 0, s = 100;   
    document.getElementById('a').onclick = function() {
        if(++i <= s) {
            elem.style.height = i +'px';
            j = i;
            if(j >= s) return false;
        }
        else {
            elem.style.height = --j +'px';
            if(j <= 0) {
                i = 0;
                return false;
            }
        }
        window.setTimeout(arguments.callee, 1);
        return false;
    };
};
</script>
<a href="#" id="a">click<a/>
<div id="div" style="background: #0095FF; overflow: hidden; width: 200px; height: 0px;"></div>
как правильно, написано 
тут