Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2012, 11:24
Avatar de El_Metallick
El_Metallick
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 6 meses
Puntos: 16
comportamiento raro de una referencia this

Estimados, me dirijo a ustedes en esta ocasión puesto que se me ha presentado un problema que me parece rarísimo y la verdad no se si alguien me pudiese explicar porque pasa. Resulta que lleno una tabla dinámicamente con PHP y en la última columna pongo una opción para eliminar la fila correspondiente, esto lo hago de la siguiente manera:

Código:
function borraFila(id) {
    id.parentNode.removeChild(id);
}
y el llamado lo hago de la siguiente manera:

Código:
borraFila(this.parentNode.parentNode)
this, es la etiqueta a, el padre es la etiqueta td y el padre de esta a su vez es tr que es lo que quiero eliminar, hasta ahí todo perfecto, el problema se me presenta cuando pongo la llamada en el atributo href de la etiqueta a, es decir

Código:
<a href="javascript: borraFila(this.parentNode.parentNode)">borrar</a>
En este caso el this toma la referencia al elemento window y no se porque, de hecho this.parentNode.parentNode no toma valor puesto que window es el nodo padre de todo el árbol DOM según entiendo.

En este momento la llamada al javascript la hago mediante el evento onClick de la etiqueta a, es decir,

Código:
<a href="#" onClick="javascript: borraFila(this.parentNode.parentNode)">borrar</a>
Y de esta forma this si toma la referencia a la etiqueta a.

Mi pregunta es, porque poniéndolo en el href no me toma bien la referencia? y poniéndola en onClick si? de hecho lo que más raro me parece es que en otros sitios de la aplicación si hago el llamado mediante el atributo href y funciona a la perfección.

Bueno maestros, espero sus respuestas,

Se despide con un saludo cordial,

Atte. Metallick
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!