Foros del Web » Programando para Internet » Javascript »

Objeto con Evento ¿xq no devuelve su propiedad?

Estas en el tema de Objeto con Evento ¿xq no devuelve su propiedad? en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/03/2007, 12:52
Avatar de keldrox  
Fecha de Ingreso: noviembre-2005
Mensajes: 95
Antigüedad: 18 años, 5 meses
Puntos: 2
De acuerdo Objeto con Evento ¿xq no devuelve su propiedad?

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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:13.