Hola, estoy teniendo problemas al intentar añadir varios eventos a la vez mediente un bucle for. El evento es añadir a un enlace el evento onclick para que me abra una ventana nueva y cargue en esa ventana un archivo pdf.
Esto me funciona correctamente:
Código:
// en eManualSep esta una cadena de texto donde van por parejas el nombre del elemento1 y la ruta del archivo que hay que abrir.
//seria asi elemento1--rutaelemento1--elemento2--rutaelemento2...
//tras el split seria eManualSep[0]=elemento1, eManualSep[1]=rutaelemento1...
var eManualSep = eManual.split('--');
this.nuevo_evento(document.getElementById('manual_'+eManualSep[0]), 'click', function(){window.open(eManualSep[1],'ventanaDatos','width=450,height=500')});
this.nuevo_evento(document.getElementById('manual_'+eManualSep[2]), 'click', function(){window.open(eManualSep[3],'ventanaDatos','width=450,height=500')});
this.nuevo_evento(document.getElementById('manual_'+eManualSep[3]), 'click', function(){window.open(eManualSep[5],'ventanaDatos','width=450,height=500')});
osea si hago lo que quiero por separado me asigna los enlaces perfectamente y me abre las ventanas con susarchivos pdf perfectamente pero si lo intento hacer con un bucle for que es lo suyo porque la longitud del array eManualSep va a ser variable me da errores, por ejemplo tal cual pongo el siguiente codigo me habilita todos los enlaces que abren el archivo del ultimo elemento del array.
En caso de que sean 3 elementos los del array, el enlace1 me abre el archivo3, el enlace2 me abre el archivo 3 y el enlace 3 me abre el 3 tb y no veo el porque.
Código:
//el array va opr parejas 0-1,2-3.... que son elemento1-rutaelemento1,elemento2-rutaelemento2..... de ahi que ponga la variable l
var eManualSep = eManual.split('--');
var l=0;
for (var r=0;r<=((eManualSep.length/2)-1);r++) {
var zp= l+1;
this.nuevo_evento(document.getElementById('manual_'+eManualSep[l]), 'click', function(){window.open(eManualSep[zp],'ventanaDatos','width=450,height=500')});
l=l+2;
}
Alguna idea porque lo veo tan simple y no me funciona que estoy ofuscado.
Funcion que añade los eventos:
this.nuevo_evento= function(elemento, evento, funcion){
if (elemento.addEventListener) {
elemento.addEventListener(evento, funcion, false);
} else {
elemento.attachEvent("on"+evento, funcion);
}
}
Un salu2.