2016-12-10 41 views
3

最近我注意到,帶有id的html元素的引用可以通過javascript訪問,只需使用一個名稱類似於該id的變量(jsbin)。Javascript:爲什麼getElementById(id)的元素仍然存在於js中?

這是爲什麼呢?爲什麼我們不得不使用getElementById(id)而不是簡單地寫id

+1

重複出現幾個問題,例如[帶DOM的DOM樹元素是否會變成全局變量?](http://stackoverflow.com/q/3434278/218196)和[爲什麼我們不在JavaScript中使用元素ID作爲標識符?](http:// stackoverflow .com/q/25325221/218196) –

+0

@FelixKling:很好找。 –

回答

5

這是爲什麼呢?

因爲早期的瀏覽器做到了這一點,它的now become standardized

爲什麼我們甚至不得不使用getElementById(id)而不是簡單地編寫id?

從技術上講,你沒有。但要小心,全球名字空間真的很,真的很擁擠。那裏扔了很多東西。不僅僅是帶有ID的元素,還有一些元素(如果它們具有name),瀏覽器上下文的名稱等等,這意味着可能存在衝突。例如,如果您有一個id="document"的元素,則不會創建自動全局。其他衝突的全局變量可能因瀏覽器而異。此外,id值不是有效的JavaScript標識符(如id="foo-bar")仍然是完全有效的id值,但其自動全局值(window["foo-bar"])很難使用。

使用getElementById具體尋找一個元件ID (未name等)。所以它更加封閉和可靠。在IE中的過時的版本,其中未能正確限制它


忽略錯誤。

相關問題