2010-06-08 29 views
10

我有一個ID爲「tbl」的表,它有2行3列。每個單元格(td)都有一個明確定義的ID。此外,該表還有一個調用函數foo()的onclick事件。每當單擊單元格時,都會生成onclick()。 表標籤是如何使用Javascript獲取調用者元素?

<表ID = 「TBL」 寬度= 「80%」 HEIGHT = 「20%」 的onclick = 「JavaScript的:FOO()」>

我還試圖javascript:foo(this)

我想找出被點擊的表格單元格的id。

我曾嘗試下面的JavaScript

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

這在谷歌Chrome和IE的偉大工程,但不是在Firefox瀏覽器。在Firefox中,發件人是未定義的。 如何在Firefox中獲取調用者單元格?

+0

我不會把它作爲一個答案(?有點太愚蠢也許),但你爲什麼不使用jQuery,所有的差異瀏覽器是爲你處理的?此外,它使onClick處理程序更直接,在某些方面... – jcolebrand 2010-06-08 21:38:09

+0

@drachenstern:你必須去那裏... – 2010-06-08 21:40:35

+2

@drachenstern:我認爲強制餵養jQuery有點過分。所有流行的框架處理瀏覽器差異。 jQuery也是我的最愛,但我認爲「你爲什麼不使用框架?」是一個更加無偏見的問題。 – 2010-06-08 21:42:51

回答

5

首先,從onclick屬性中刪除javascript:。您在鏈接的href屬性中將此問題與javascript混淆。在Javascript代碼中,javascript:會創建一個名爲「javascript」的label

除此之外,foo(event)應該與您的最終JavaScript代碼示例正常工作。它在Firefox中無效但在Chrome和IE中運行的原因是;它們都支持全局事件對象window.event(當您的e.target產生undefined時,將對此進行評估,因爲this是不具有target屬性的元素)。 Firefox不支持全球event對象。

延伸閱讀:

+0

+ 1的'事件',而不是'這個'... – jcolebrand 2010-06-08 21:38:47

相關問題