最近我注意到,帶有id的html元素的引用可以通過javascript訪問,只需使用一個名稱類似於該id的變量(jsbin)。Javascript:爲什麼getElementById(id)的元素仍然存在於js中?
這是爲什麼呢?爲什麼我們不得不使用getElementById(id)
而不是簡單地寫id
?
最近我注意到,帶有id的html元素的引用可以通過javascript訪問,只需使用一個名稱類似於該id的變量(jsbin)。Javascript:爲什麼getElementById(id)的元素仍然存在於js中?
這是爲什麼呢?爲什麼我們不得不使用getElementById(id)
而不是簡單地寫id
?
這是爲什麼呢?
因爲早期的瀏覽器做到了這一點,它的now become standardized。
爲什麼我們甚至不得不使用
getElementById(id)
而不是簡單地編寫id?
從技術上講,你沒有。但要小心,全球名字空間真的很,真的很擁擠。那裏扔了很多東西。不僅僅是帶有ID的元素,還有一些元素(如果它們具有name
),瀏覽器上下文的名稱等等,這意味着可能存在衝突。例如,如果您有一個id="document"
的元素,則不會創建自動全局。其他衝突的全局變量可能因瀏覽器而異。此外,id
值不是有效的JavaScript標識符(如id="foo-bar"
)仍然是完全有效的id
值,但其自動全局值(window["foo-bar"]
)很難使用。
使用getElementById
具體尋找一個元件與ID (未name
等)。所以它更加封閉和可靠。在IE中的過時的版本,其中未能正確限制它
忽略錯誤。
重複出現幾個問題,例如[帶DOM的DOM樹元素是否會變成全局變量?](http://stackoverflow.com/q/3434278/218196)和[爲什麼我們不在JavaScript中使用元素ID作爲標識符?](http:// stackoverflow .com/q/25325221/218196) –
@FelixKling:很好找。 –