簡短的回答是,在HTML/JavaScript DOM API中,您有getElementById函數,它返回一個元素,而不是集合。所以如果你有多個具有相同ID的元素,它不知道選擇哪一個。
但問題是不是啞巴實際上,因爲我們有理由希望一個ID可能是指多個元素的HTML。例如,用戶可能會選擇文本並想對其進行註釋。您想用
<span class="Annotation" id="A01">Bla bla bla</span>
顯示這個如果跨越多個段落,用戶選擇的文本,然後將需要被分解成片段,但所有選取的片段應該是相同的「ID」尋址。
需要注意的是,在過去,你可以把你的HTML
<a name="..."/>
元素,你可以用getElementsByName找到他們。所以這是相似的。但不幸的是,HTML規範已經開始貶低它,這是一個壞主意,因爲它留下了一個重要的用例而沒有簡單的解決方案。
當然,使用XPath,您可以使用任何屬性或甚至文本節點作爲標識。顯然,XPointer的規範允許您通過任何XPath表達式要參考的元素和使用,在URL片段引用在
http://my.host.com/document.html#xpointer(id('A01'))
或它的短版
http://my.host.com/document.html#A01
,或者其他等效XPath表達式:
http://my.host.com/document.html#xpointer(/*/descendant-or-self::*[@id = 'A01'])
等,一個可以參考的name屬性
http://my.host.com/document.html#xpointer(/*/descendant-or-self::*[@name = 'A01'])
或任何你命名你的屬性
http://my.host.com/document.html#xpointer(/*/descendant-or-self::*[@annotation-id = 'A01'])
希望這有助於。
它使現在的方式有很多意義。雖然課程可能會改變爲類似風格的課程,但具有更多的意義。 – 2011-09-21 19:20:45
你應該關心某人在某些文件中寫什麼。沒有定義,審查和接受的標準,我懷疑你會有這樣的地方來問這個問題:-) – andyb
哈!韋斯利將他的名字改爲@mog。 – Ziggy