Foros del Web » Programando para Internet » Javascript »

alert(this.name) muestra undefined dentro de funcion

Estas en el tema de alert(this.name) muestra undefined dentro de funcion en el foro de Javascript en Foros del Web. Hola a todos, una pregunta, ¿ por qué cuando corro este script y hago clic en los objetos me sale undefined ? Código: function cBloque(i,j) ...
  #1 (permalink)  
Antiguo 19/11/2010, 10:35
 
Fecha de Ingreso: noviembre-2009
Ubicación: 127.0.0.1
Mensajes: 31
Antigüedad: 13 años, 2 meses
Puntos: 1
alert(this.name) muestra undefined dentro de funcion

Hola a todos, una pregunta, ¿ por qué cuando corro este script y hago clic en los objetos me sale undefined ?

Código:
function cBloque(i,j) {
	this.name = "fila[" + i + "," + j + "]";
	this.crear = function(){
		this.bloque = document.createElement("div");
		this.bloque.className = "bloque_1";
		document.body.appendChild(this.bloque);
	}
	
	this.addEvent = function(){
		
		// Agregando Evento
		
		if(this.bloque.addEventListener){
			// Mozilla
			this.bloque.addEventListener('click',function(event){
				alert(this.name); <----- Aquí
			},false);
		}
			// Iexplorer.
		else if ( this.bloque.attachEvent){
			this.bloque.attachEvent('onclick',function(event){
				alert("hola");
			});
		}
	}	
}

// Funcion para crear el tablero

function tablero(){
	for(var i=0;i<=fila.length-1;i++){
		for(var j=0;j<=fila[i].length - 1;j++){
			var bloque = new cBloque(i,j);
			alert(bloque.name);
			bloque.crear();
			bloque.addEvent();
			
		}
	}
}

Si a la funcion addEvent le agrego un parametro "nombre" y en la llamada pongo bloque.addEvent(bloque.name), sí funciona.

Quisiera saber porque el primer script no .
  #2 (permalink)  
Antiguo 19/11/2010, 10:50
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.145
Antigüedad: 18 años, 8 meses
Puntos: 832
Respuesta: alert(this.name) muestra undefined dentro de funcion

Porque this en ese contexto no es una referencia al objeto principal (cBloque) sino a su propiedad bloque, que es a la que estás agregando el evento.
  #3 (permalink)  
Antiguo 19/11/2010, 10:54
 
Fecha de Ingreso: noviembre-2009
Ubicación: 127.0.0.1
Mensajes: 31
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: alert(this.name) muestra undefined dentro de funcion

Gracias Panino5001 ! me ha funcionado y entendí el contexto. Si quiero hacer referencia a this.bloque en ese contexto solo pongo this.

Etiquetas: funcion, muestra, undefined
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 18:53.