document
對象有一個getElementById
方法,但返回的元素沒有這個方法,它不能接受一個字符串不完全是一個元素的id [如果這就是你想要的一個庫,如document.querySelector]的jQuery或Pumbaa80's suggestion]。
在某些瀏覽器,你可以嘗試:
document.getElementById('div1').getElementsByTagName('div')[0]
作爲一個側面說明,嘗試下探這兩個HTML文件轉換成html5.validator.nu或http://validator.w3.org/#validate_by_input
<!DOCTYPE html><head><title>t</title></head><body>
<div id=div1><div id=d1>one</div><div id=d2>two</div>three</div>
<div id=div2><div id=d1>four</div><div id=d2>five</div>six</div>
</body>
現在,你可以完全避免使用相同的ID兩次通過使用類來代替。
<!DOCTYPE html><head><title>t</title></head><body>
<div id=div1><div class=d1>one</div><div class=d2>two</div>three</div>
<div id=div2><div class=d1>four</div><div class=d2>five</div>six</div>
</body>
對於第一個,你可以使用document.querySelector('#div2 #d1')
或$('#div2 #d1')
,但我不認爲結果會跨越由於所有瀏覽器都得到保證,這應該相當於寫document.querySelector('#d1')
,你可以請參閱返回匹配的第一個出現的id,或返回數組中的兩個id匹配元素的$('#d1')
。
而對於第二個,你可以使用document.querySelector('#div2 .d1')
或$('#div2 .d1')
或其他語句獲得非常相似的結果,只不過這次你的html是有效的。您甚至不必擁有定義d1
和d2
的css,並且如果您使用了class="d1 mySubHeading"
和class="d2 mySubHeading"
這樣的屬性,則可以使用mySubHeading
和d1
和d2
這兩種樣式純粹用於通過這些方法進行選擇。
HTML ID必須是唯一的。期。 – bfavaretto 2012-03-19 19:30:17
「當你有很多代碼,並且你不小心使用了相同的id兩次時,它就成了一個主要問題,它會造成很難被壓制的令人討厭的bug。」你不是在幫你的情況:P – jbabey 2012-03-19 19:31:34
在旁註中,你的屬性值必須被引用。 – jbabey 2012-03-19 19:33:05