Foros del Web » Programando para Internet » Javascript »

Problema con Objeto

Estas en el tema de Problema con Objeto en el foro de Javascript en Foros del Web. Buenas tardes-noches a tod@s. Tengo un problema.. raro raro... Tengo algo tan simple como un enlace que llama a una función Javascript --> href="javascript :hazlo(this)" ...
  #1 (permalink)  
Antiguo 09/12/2006, 12:25
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Problema con Objeto

Buenas tardes-noches a tod@s.

Tengo un problema.. raro raro...

Tengo algo tan simple como un enlace que llama a una función Javascript --> href="javascript:hazlo(this)"

En la función hazlo, al hacer una alerta del objeto que me llega, me dice que es de tipo Object.. pero el nodeNAme, no funciona, el TagName tampoco... y no encuentro la manera de saber que tipo de objeto es el que ha llamado a la función...

Me gustaría que alguien me mirase esto.. porfavor..

Os dejo el código
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
	<script language="JavaScript1.2" type="text/javascript">
		function hazlo (objReferer)
		{
			alert(objReferer)
			alert(objReferer.nodeName)
			alert(objReferer.tagName)
			alert(objReferer.parentNode)
		}
	</script>
</head>

<body>
<a href="javascript:hazlo(this)">AAAAA</a>


</body>
</html>
Saludos a todos
  #2 (permalink)  
Antiguo 09/12/2006, 12:34
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Problema con Objeto

Hola el_javi

Prueba llamando así a la función:

Código:
<a href="#" onclick="hazlo(this)">AAAAA</a>
Saludos,
  #3 (permalink)  
Antiguo 09/12/2006, 12:38
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Re: Problema con Objeto

JavierB, veloz, como siempre

Eso lo probé, y logicamente, como el EVENTO onclick es el que está haciendo la llamada, y es propio del objeto A, funciona.

El problema es que en la página, si tienes un contenido extenso, al ejecutarse priomero el href="#", me sube la página arriba, y posteriormente, me hace lo que tiene que hacer y envia la página (osea, dos movimientos de la página cuando solo debería de haber uno).

El tema es saber, porque/como con el HREF directamente, obtenemos el tipo de objeto (el mismo objeto que mandó ejecutarse la función javascript).

Gracias por tu contestación, y a ver si podemos encontrar respuesta a esto
  #4 (permalink)  
Antiguo 09/12/2006, 12:51
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Problema con Objeto

Hola de nuevo.

La verdad es que no se por qué con el href no funciona (seguro que alguien con más luces viene por aquí y nos lo aclara), pero si quieres evitar que te salte al principio de la página puedes utilziar return false

<a href="#" onclick="hazlo(this); return false">AAAAA</a>

Saludos,
  #5 (permalink)  
Antiguo 09/12/2006, 12:56
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Re: Problema con Objeto

Hola de nuevo JavierB

Pues me quedo con el gusanillo de saber porque con el HREF no pasa el objeto como tal, como la entidad que es, y lo pasa como objeto genérico... Espero que como tu dices, aparezca algun "alumbrador" y nos ilumine

La verdad que me acabas de enseñar algo nuevo.. yo no sabia que con un simple "return(false)" se cancelaba el salto del ancla producido por el href="#".

De momento me es util.. pero no me quedo satisfecho.. hasta que alguien me / nos expliquen como pasar el enlace como referencia desde el HREF.

Gracias de nuevo JavierB

  #6 (permalink)  
Antiguo 09/12/2006, 13:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Problema con Objeto

Hola:

Tampoco es que sepa exactamente la respuesta, pero href es un atributo también del objeto location, y con un enlace se modifica ese objeto...

A veces me pongo un poco pesado recomendando no usar el tag "a" para ejecutar un script, y tal vez este sea un ejemplo para justificarlo...

Entre las alertas puedes probar con objReferer.location.href o objReferer.document.title

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 09/12/2006, 17:23
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: Problema con Objeto

loading...........


lo que debes hacer es.

Código PHP:
function hazlo (objReferer)
{
//objReferer=window.event.srcElement; //para IE
//objReferer= event.target;  //para Netscape y otros
alert(objReferer)
alert(objReferer.nodeName)
alert(objReferer.tagName)
alert(objReferer.parentNode)


connection closed.
__________________

Maborak Technologies
  #8 (permalink)  
Antiguo 09/12/2006, 17:32
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Re: Problema con Objeto

Estimado compañero MaBoRaK

Ante todo, gracias por responder.

He probado lo que me comentas (capturar el elemento que ha producido el evento) pero .. en Internet Explorer, window.event directamente me dice que es null.. y en Firefox, me dice que event "is not defined" .. osea, mas de lo mismo

Me gustaría ver si puedes echarme una mano con este tema....

Gracias de antemano

  #9 (permalink)  
Antiguo 09/12/2006, 17:34
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Re: Problema con Objeto

Parece ser que el HREF no ejecuta ningún tipo de evento, porque lo he puesto en el onclick (ya sabía de antemano que hay si funciona) pero lo he puesto en el onclick, y me da que hay evento...

Es como si el HREF no ejecutase evento alguno...

A ver si podemos llegar a algo en claro sobre este tema.. que puede ser interesante.

  #10 (permalink)  
Antiguo 09/12/2006, 17:51
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: Problema con Objeto

loading...........


si pones:

Código PHP:
<a href="#" onclick="hazlo(event)">AAAAA</a

??

connection closed.
__________________

Maborak Technologies
  #11 (permalink)  
Antiguo 10/12/2006, 04:32
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Re: Problema con Objeto

MaBoRaK: esa idea ya estaba contemplada.

El tema es llegar al significado y a la idea final de porquñe un objeto pasado como referencia en a una función javascript desde un href="" no llega a la función como dicho objeto, sino como objeto Genérico.

Gracias por contestar.. a ver si llegamos al quiz de la cuestión.

  #12 (permalink)  
Antiguo 10/12/2006, 06:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Problema con Objeto

Cita:
Iniciado por el_javi Ver Mensaje
El tema es llegar al significado y a la idea final de porquñe un objeto pasado como referencia en a una función javascript desde un href="" no llega a la función como dicho objeto, sino como objeto Genérico.
Buenas

Es normal. El nodo que se está enviando como argumento a la función desde el href es el propio href que es un nodo de tipo Attr; en cambio el nodo que se envía desde el onclick es el propio a que es un nodo de tipo Element.

Osea, que se envían nodos distintos con this dependiendo de desde dónde se esté llamando a la función.

Cita:
Los objetos Attr heredan la interfaz Node, pero como en realidad no son nodos hijos del elemento al que describen, el DOM no los considera parte del árbol del documento. Así, los atributos de Node parentNode, previousSibling y nextSibling tiene un valor null para los objetos Attr. El DOM considera que los atributos son propiedades de elementos, es decir, que no tienen una identidad separada de los elementos a los que están asociados; gracias a esto debería ser más sencillo implementar características tales como atributos por defecto asociados a elementos de un tipo dado.
http://html.conclase.net/w3c/dom1-es...l#ID-637646024

He estado mirando y no he encontrado la forma de referenciar al nodo ELEMENT dentro del cual se encuentra el nodo ATTRIBUTE que llame a la función. No sé si es que no se puede o que no he mirado lo suficiente.

Un saludo
  #13 (permalink)  
Antiguo 10/12/2006, 07:08
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Problema con Objeto

me lo estaba yo remirando esto ... y creo que ni siquiera se está enviando un nodo desde el href. Al activar el href se realiza una llamada a la función como se haría una llamada a un documento sin guardar ninguna relación con el elemento que ha realizado la llamada.

Es decir, se está llamando a la función igual que si lo hiciéramos en el momento de cargar el documento

Código:
	<script language="JavaScript1.2" type="text/javascript">
		function hazlo (objReferer)
		{
			alert(objReferer)
			alert(objReferer.nodeName)
			alert(objReferer.tagName)
			alert(objReferer.parentNode)
		}
		hazlo(this)
	</script>
Tanto desde el href como desde debajo de la función objReferer devuelve lo mismo

[object Window]

De manera que no creo que se pueda llegar a saber qué elemento llamó a la función desde su href.

Vamos, es mi opinión, y por supuesto puedo estar equivocada. Yo me voy a comer y ahí dejo eso
  #14 (permalink)  
Antiguo 10/12/2006, 13:04
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 8 meses
Puntos: 1
Re: Problema con Objeto

Hola, estas dos formas si devuelven el elemento A...

Código HTML:
<a href="javascript:return false" onclick="javascript:hazlo(this)">AAAAA</a> 
Código HTML:
<a href="javascript:void()" onclick="javascript:hazlo(this)">AAAAA</a> 
¿La explicación? Probablemente tenga mucho que ver con lo que dijo tunait.

Cita:
Iniciado por tunait Ver Mensaje
Buenas
Es normal. El nodo que se está enviando como argumento a la función desde el href es el propio href que es un nodo de tipo Attr; en cambio el nodo que se envía desde el onclick es el propio a que es un nodo de tipo Element.
El caso es que de esta manera nos quitamos de delante el href haciendo que, en el primer caso devuelva false y en el segundo que no devuelva nada.

Última edición por vengava; 10/12/2006 a las 16:16
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 08:33.