buenas...
sucede que setInterval, al igual que otras funciones (setTimeout, Function, eval) interpretan el codigo en un contexto distinto cuando el primer argumento es un string. si en la funcion hicieras un alert del argumento pasado (this) notaras que dicho argumento representa el objeto window. para que te funcione correctamente, en lugar de pasar un string, tienes que pasar una funcion anonima que invoque la funcion deseada. es decir...