2010-06-08 15 views
10

Mam tabelę z id "tbl" i ma 2 wiersze i 3 cols. Każda komórka (td) ma jawnie zdefiniowany identyfikator. Ponadto tabela zawiera zdarzenie onclick, które wywołuje funkcję foo(). Funkcja onclick() byłaby generowana za każdym kliknięciem dowolnej komórki. Znacznik tabelaJak zdobyć element dzwoniącego za pomocą JavaScript?

< tabeli id ​​= "tbl" szerokość = "80%" wysokość = "20%" onclick = "JavaScript: bla()">

również próbował javascript: foo (this)

Chcę znaleźć identyfikator komórki tabeli, która została kliknięta.

Próbowałem następujące JavaScript

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

Działa to doskonale w Google Chrome i IE, ale nie w Firefoksie. W przeglądarce Firefox nadawca jest niezdefiniowany. Jak uzyskać komórkę dzwoniącą w przeglądarce Firefox?

+0

nie będę umieścić go jako odpowiedź (? Zbyt asinine może), ale dlaczego nie używasz jQuery gdzie wszystkie różnice w przeglądarki są obsługiwane? Co więcej, sprawia, że ​​przypisywanie procedur onClick jest nieco prostsze, pod pewnymi względami ... – jcolebrand

+0

@drachenstern: musieliście tam pojechać ... –

+2

@drachenstern: Myślę, że karmienie za pomocą siły jQuery idzie trochę za daleko. Wszystkie popularne frameworki obsługują różnice między przeglądarkami. jQuery jest także moim ulubionym, ale myślę "dlaczego nie używasz frameworka?" jest bardziej bezstronnym pytaniem. –

Odpowiedz

5

Najpierw usuń javascript: z atrybutu onclick. Mylicie to z javascript w atrybucie linku href. W kodzie JavaScript javascript: utworzyłby kod label o nazwie "javascript".

Poza tym foo(event) powinien działać poprawnie z ostatecznym przykładem kodu JavaScript. Powód, dla którego nie działa w przeglądarce Firefox, ale działa w Chrome i IE; Oba obsługują obiekt zdarzenia globalnego, window.event (który jest oceniany, gdy Twój e.target przynosi undefined, ponieważ this jest elementem, który nie będzie miał właściwości target). Firefox nie obsługuje globalnego obiektu event.

Dalsze czytanie:

+0

+1 dla 'zdarzenia', a nie' tego '... – jcolebrand

Powiązane problemy