2011-06-14 16 views
1

我正在重構一些(身體其他的)代碼,並且我在前一段時間之前已經看到了這一點,我不記得它發生的原因。有一個在HTML中的SELECT標記,看起來像這樣:至少有SELECT標記的Internet Explorer元素ID錯誤;不需要document.getElementById來識別它

<SELECT id="model"></SELECT> 

在JavaScript中,它增加了一個選項,選擇標記聲明:

model.options[i]=option; 

這工作正常,在Internet Explorer(在測試IE 7和8)出於某種原因。它應該觸發一個錯誤,但它不會。然而,如Firefox瀏覽器,這引發了一個錯誤,因爲它應該,對代碼應該是:

document.getElementById("model").options[i]=option; 

這背後的原因,除了Internet Explorer在喜歡不符合W3C標準的事實?這只是SELECT或任何數量的標籤的問題?

謝謝!

回答

2

如果我沒有記錯,Internet Explorer將創建對應於元素的id屬性的全局變量。

所以,當你創建一個元素...

<select id="wtv"></select> 

...引擎蓋下的IE瀏覽器初始化的全局變量wtv是該元素的DOM對象。但其他瀏覽器不這樣做,所以wtv未定義。

一些引文:

+0

是啊,這是有道理的。謝謝! – user717236 2011-06-14 14:49:26

+1

+1。是的,這是一個傳統的IE特有的'功能',可以追溯到IE4的日子。沒有其他瀏覽器支持它,也不會支持它。由於向後兼容的原因,IE繼續支持它,但不要依賴於無限期地繼續。 – Spudley 2011-06-14 14:50:02

+1

@ user717236 - 如果這個答案有幫助,請不要忘記[使用綠色勾號接受它](http://www.mitalia.net/images/so/accepted_tick.png)。 [你可以閱讀更多關於接受meta.stackoverflow.com上的答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – 2011-06-15 18:51:17