2010-06-08 16 views
10

Ho una tabella con id "tbl" e ha 2 righe e 3 colonne. Ogni cella (td) ha un ID esplicitamente definito. Inoltre, la tabella ha un evento onclick che chiama una funzione foo(). Onclick() verrebbe generato ogni volta che si fa clic su una cella. Il tag table èCome ottenere l'elemento chiamante usando Javascript?

< tabella id = larghezza "tbl" = "80%" height = "20%" onclick = "javascript: foo()">

Ho anche provato javascript: foo (this)

Desidero scoprire l'ID della cella di tabella su cui è stato fatto clic.

Ho provato quanto segue javascript

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

Questa grande opera in Google Chrome e IE, ma non in Firefox. In Firefox, il mittente non è definito. Come ottenere la cella del chiamante in Firefox?

+0

non voglio metterlo come una risposta (? Un po 'troppo stupida forse), ma perché non stai usando jQuery in cui tutte le differenze di i browser sono gestiti per te? Inoltre, rende l'assegnazione dei gestori onClick un po 'più semplice, in qualche modo ... – jcolebrand

+0

@drachenstern: dovevi andare lì ... –

+2

@drachenstern: Penso che l'alimentazione forzata di jQuery stia andando un po' troppo lontano. Tutti i framework popolari gestiscono le differenze tra browser. Anche jQuery è il mio preferito, ma penso "perché non usi un framework?" è una domanda più obiettiva da chiedere. –

risposta

5

In primo luogo, rimuovere javascript: dall'attributo onclick. Stai confondendo questo con javascript nell'attributo href di un collegamento. Nel codice Javascript, javascript: creerebbe un label denominato "javascript".

Diverso da quello, foo(event) dovrebbe funzionare correttamente con l'esempio di codice JavaScript finale. Il motivo per cui non funziona in Firefox, ma in Chrome e IE è; entrambi supportano l'oggetto evento globale, window.event (che viene valutato quando il tuo e.target produce undefined, perché this è un elemento che non avrà una proprietà target). Firefox non supporta l'oggetto globale event.

Ulteriori approfondimenti:

+0

+1 per 'event' e non' this' ... – jcolebrand

Problemi correlati