Me gustaría si es posible intentar solucionar esto, por que tengo un quebradero de cabeza de hace 3 o 4 dias (ya abreis visto distintos topic estos dias sobre temas similares ).
Bueno sin mas os dejo el codigo:
Archivo index.html:
Código:
Archivo class.iDkBotones.js<html> <head> <title> Prueba iDkBotones </title> <script src="class.iDkBotones.js" language="javascript"></script> </head> <body> <div id="contenedor"> <script language="javascript"> // Creamos los 4 objetos y le voy dando una propiedad distinta ha cada mediante el cont. for( cont = 0; cont < 4 ; cont++ ) { var iDkBotonesObject = new iDkBotones( 'Enlace', 0, cont, '#' ); iDkBotonesObject.Show(); } </script> </div> </body> </html>
Código:
He resumido el codigo lo mas que he podido para que no se os haga pesado.////////////////////// // CLASE iDkBotones // ////////////////////// function iDkBotones( name, idBoton, idPadre, enlace ) { ////////////////////////// // PROPIEDADES PÚBLICAS // ////////////////////////// this.name = name; this.idBoton = idBoton; this.idPadre = idPadre; this.enlace = enlace; ////////////////////////// // PROPIEDADES PRIVADAS // ////////////////////////// this.verInsertText = ( document.getElementsByTagName("body")[0].innerText != undefined ) ? true : false; ////////////////////// // MÉTODOS PÚBLICOS // ////////////////////// this.OnMouseOver = OnMouseOver; this.Show = Show; } function OnMouseOver(e) { alert( e ); } function Show() { var crear_a = document.createElement( "a" ); crear_a.setAttribute( "href", this.enlace ); // Y aqui es donde reside todo mi quebradero .... // si pongo : // crear_a.onmouseover = function() { iDkBotonesObject.OnMouseOver( this.idPadre ) }; // me devuelve undefined. // si pongo // crear_a.onmouseover = this.OnMouseOver( this.idPadre ); // primero lo llama, pero despues el evento deja de funcionar. // Asi en esta forma todos devuelven el ultimo valor, en este caso el 3 :(! crear_a.onmouseover = function() { iDkBotonesObject.OnMouseOver( iDkBotonesObject.idPadre ) }; if( !this.verInsertText ) { crear_a.textContent = this.name; } else { crear_a.innerText = this.name; } document.getElementById("contenedor").appendChild( crear_a ); }
Un saludo y muchisimas gracias