<html>
<head>
<meta charset="windows-1251" />
</head>
<body>
<div id="foo">foo</foo>
<script>
r=function(){return Math.round(Math.random())}
getRandomColor=function(){return r()? "grey":"black"}
changeColor=function (a, id){
document.getElementById(id).style.background = getRandomColor()
setTimeout(function() {changeColor(a, id)}, a);
}
changeColor(1000, "foo")
</script>
</body>
</html>
Вообще, setInterval для таких вещей использовать логичней.