dmitriymar, чтобы вы не несли чушь про циклы, я покажу вам наглядный пример, как делается такая анимация на чистом JS:
<div id='foo' style='width: 50px; height: 50px; position: absolute; background: #555555'>
</div>
<script type='text/javascript'>
window.onload = function () {
document.getElementById("foo").onclick = function () {
var E = this;
this.onclick = new Function;
(function (toTop, from, to) {
var start = new Date().getTime(),
callee = arguments.callee;
setTimeout(function () {
var progress = (new Date().getTime() - start) / 1000;
E.style.top = ((to - from) * progress + from) + "px";
if (progress < 1)
setTimeout(arguments.callee, 13);
else
callee(!toTop, toTop ? 0 : 180, toTop ? 180 : 0);
}, 13);
})(false, 0, 180);
};
};
</script>