2012-07-26 38 views
2

以下在Fi​​reFox和IE上運行良好,但不適用於Chrome。在Chrome中,「圖像」 ID傳遞給doSomething()功能undefined,而在Firefox和IE它正確地引用「IMG」標籤:爲什麼在Chrome上對img標籤的前向引用失敗,但適用於FireFox和IE?

<div onclick="doSomething(image);"><img id="image" src="test.gif" /></div> 

顯然,Chrome瀏覽器無法處理前方基準?

+1

它沒有真正的時間在向前引用您實際點擊該元素的IMG會在DOM中。我認爲這是傳統的老舊IE瀏覽器行爲,其中元素ID自動成爲全局變量,顯然FF支持,但Chrome不支持。 (IE可能不應該首先支持這種行爲。)根據Mark的回答使用'document.getElementById()',你應該沒有問題。 – nnnnnn 2012-07-26 01:28:43

+0

@nnnnnn,你的想法是對的,我今天剛剛學到了一些令我感到驚訝的新東西。 :-D – 2012-07-26 01:32:45

+1

@nnnnnn,正如你所說'我認爲這是傳統的老舊IE瀏覽器行爲,其中元素id自動變成全局變量,這是真的,因爲我已經在螢火蟲中測試過它。你可以給我任何這方面的參考,我可以閱讀更多關於這個?謝謝! – 2012-07-26 01:35:58

回答

3

我不知道到底,但我想如果你使用getElementById方法你的代碼將工作:

<div onclick="doSomething(document.getElementById('image'));"><img id="image" src="test.gif" /></div> 
+0

不需要猜測,它會_will_工作(除非該元素有多個元素,儘管這將是無效的)。 +1。 – nnnnnn 2012-07-26 01:26:10

+0

呃,實際上,它不起作用。但是,這個問題似乎是另一回事。事實證明,我發佈的簡單示例也適用於Chrome,作爲一個簡單的測試案例 - 而不是在我的大量HTML/JS(實際上由Sandcastle幫助系統生成)的上下文中。正如我所說的,儘管FireFox和IE都能正常工作。如果我可以調試問題,我會發佈一個後續... – 2012-07-26 02:35:03

+0

僅供參考,事實證明getElementById能夠工作(如果你做得對!) - 抱歉。此外,僅當Chrome瀏覽器出現在iframe中的任何位置時,該示例纔會在Chrome中失敗。 – 2012-07-26 05:13:55

相關問題