А потому-что Вы функцию
blink вызываете в цикле (вообщем нужно без
скобок), и вообще такая конструкция работать правильно не будет.
Сделайте так:for (var i = 0; i < li.length; i++) {
setInterval(blink, 1000);
}
UPD
Чтоб правильно работало, скажите что вы хотите добится? и зачем Вам тут цикл.
Просто из-за того, что функция выполняется с задержкой, вы всегда будете иметь
n = li.length - 1
Да и к тому-же
blink будет вызван больше раз, чем вы задумали :)