Hola amigos, creo 4 objetos a traves de un bucle y le voy dando propiedades distintas a cada uno, pues bien, todos los objetos me devuelven el mismo valor en la propiedad, en vez de diferentes como debería ser.
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:
<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>
Archivo class.iDkBotones.js
Código:
//////////////////////
// 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 );
}
He resumido el codigo lo mas que he podido para que no se os haga pesado.
Un saludo y muchisimas gracias