2010-06-08 16 views
10

Tengo una tabla con id "tbl" y tiene 2 filas y 3 cols. Cada celda (td) tiene una identificación definida explícitamente. Además, la tabla tiene un evento onclick que llama a una función foo(). El onclick() se generará cada vez que se haga clic en una celda. La etiqueta de tabla es¿Cómo obtener el elemento llamante usando Javascript?

< tabla id = "TBL" width = "80%" height = "20%" onclick = "javascript: foo()">

I también trató javascript: foo (this)

Deseo encontrar la identificación de la celda de la tabla en la que se hizo clic.

He intentado el siguiente JavaScript

function foo(e) 
{ 
    var sender = (e && e.target) || (window.event && window.event.srcElement); 
    alert("Sender" + sender.id); 
} 

Esto funciona muy bien en Google Chrome e IE, pero no en Firefox. En Firefox, el remitente no está definido. ¿Cómo obtener la celda de llamada en Firefox?

+0

no voy a poner como una respuesta (? Un poco demasiado estúpida tal vez), pero por qué no estás usando jQuery, donde todas las diferencias en los navegadores se manejan por usted? Además, hace que la asignación de manejadores onClick sea un poco más directa, de alguna manera ... – jcolebrand

+0

@drachenstern: tenías que ir allí ... –

+2

@drachenstern: Creo que alimentar a la fuerza jQuery está yendo demasiado lejos. Todos los frameworks populares manejan las diferencias del navegador. jQuery es mi favorito también, pero creo "¿por qué no usas un marco?" es una pregunta más imparcial para hacer. –

Respuesta

5

En primer lugar, elimine javascript: del atributo onclick. Está confundiendo esto con javascript en el atributo href de un enlace. En el código de Javascript, javascript: crearía un label llamado "javascript".

Aparte de eso, foo(event) debería funcionar correctamente con su muestra de código JavaScript final. La razón por la que no funciona en Firefox pero lo hace en Chrome e IE es; ambos admiten el objeto de evento global, window.event (que se evalúa cuando su e.target produce undefined, porque this es un elemento que no tendrá una propiedad target). Firefox no es compatible con el objeto global event.

Más información:

+0

+1 para 'event' y no' this' ... – jcolebrand

Cuestiones relacionadas