bazilio2010,
потому что в up не передается el когда он ставится колбэком для таймера.
var a = 0;
function up(el) {
var s = el;
a += 0.1
s.style.opacity = a;
if (a < 1) {
setTimeout(function () { up(el);}, 20);
}
}
попробуйте так, здесь мы замыкаем el внутри колбэка для таймера, а потом с ним (el) вызываем up