考慮下面的代碼:HTML元素的ID作爲JavaScript變量
<html>
<head></head>
<body>
<div id='test' class='blah'>
<a href='http://somesite.com/' id='someLink'>click!</a>
</div>
</body>
</html>
所以我剛剛發現,這將創建一個JavaScript對象調用someLink
,我可以例如獲得href屬性的值與someLink.href
。我在最新的Chrome,FF和IE中測試了它,並且它工作正常。
首先,這個「功能」到底有多長?我想可能有一段時間了,因爲我已經知道多年以來,頁面上html元素的ID必須是唯一的,並且如果確實有多個元素共享相同的ID,則最後一個元素覆蓋前一個元素,並且例如使用getElementById()將返回最後一個。但我從來沒有真正理解爲什麼,但現在,把它看作是「這是創造一個對象」的視角,這是有道理的。所以,只要能夠使用id-name-as-javascript對象直接訪問它......多久了? IE6時代?早些時候?
第二......我想這更像是一個討論的問題,而不是問題,但...... IMO似乎並不是一個非常好的「特徵」......是不是有點一個DOM和包裝函數,如getElementById()
,給一些組織,更重要的是,減少命名空間問題?我不覺得我應該不必擔心頁面上的隨機html元素覆蓋我的javascript變量(最近發生的一些事情,這就是爲什麼我發現這個「功能」)。有沒有人知道爲什麼這是現實,它背後的邏輯是什麼?
「我已經知道多年以來,頁面上html元素的ID必須是唯一的,並且如果確實有多個元素共享相同的ID,則最後一個元素覆蓋前一個元素,並且使用例如getElementById()將返回最後一個「據我所知,'getElementById()'將返回**第一個**,而不是最後一個具有給定ID的元素;儘管它絕對不一致(或者至少不應該依賴於一致性)。 – 2012-03-16 15:44:47
你用第二點擊打頭部。它不是一個很好的特性,這就是爲什麼它永遠被棄用,如果你使用''use strict''指令,它將不會工作。 – zzzzBov 2012-03-16 15:45:14