Eso, creo, es porque cada vez que ejecutas la función se crea un nuevo setInterval de la función, así que te reomiendo que uses setTimeout en su lugar. Y por cierto, clearInterval/Timeout recibe como parámetro una variable que hace referencia a un temporizador de ese tipo, no un string. O sea:
Código Javascript
:
Ver originalvar temp = setInterval(function(){
alert('Hola');
}, 1000);
setTimeout(function(){
clearInterval(temp);
}, 3000);
Saludos (: