2010-11-16 509 views

回答

9

如果你想找出是否超過一個元素共用一個ID,使用jQuery你可以做$('[id=blah]').length - 這將返回所有元素的計數,其中id等於'blah'。見the fiddle。如果它大於1,那麼你有一個重複的ID。

編輯:我已經在Chrome,FF和IE6中測試過了,它們都顯示有兩個元素具有相同的ID。我同意多個元素共享一個id是非常糟糕的形式,但是這個代碼確實有效。

+0

-1表示可能有幾個id等於'blah'的元素。 :-) – 2010-11-16 10:22:15

+0

@Marco - 閱讀這個問題:「檢查是否存在具有相同ID的HTML元素」我認爲OP在問你是否可以檢查多個元素是否共享相同的ID。 – Skilldrick 2010-11-16 10:23:06

+0

似乎很甜.... – Sussagittikasusa 2010-11-16 10:24:22

0
if(!document.getElementById('search')) { return; } 
3

可能(如果我沒有理解這個問題)

if (document.getElementById('theId')) { 
} 
+1

是我最初的想法,但我重新閱讀了這個問題,它可能是多個元素可能已經存在相同的ID,在這種情況下,只有其中一個會在這裏返回。 – 2010-11-16 10:14:39

+0

沒錯,如果多個具有相同ID的元素已經存在? – Sussagittikasusa 2010-11-16 10:17:54

+2

如果您有多個具有相同ID的元素,那麼您已經離開了有效的HTML領域,並且可能無法讓DOM方法正常工作,尤其是在不同的瀏覽器中。 – Thilo 2010-11-16 10:19:22

0

是的。 迭代直通document.getElementsByTagName('*'),使用element.getAttribute('id')

3

此外,爲了打印所有副本:

var elems = document.getElementsByTagName('*'); 
var num = elems.length; 
var ids = [ ]; 
for(i=0; i<num; i++) { 
    var id = elems[i].getAttribute('id'); 
    if(id != null) { 
     if(ids.indexOf(id) >=0) { 
      console.debug(id); // found in table 
     } else { 
      ids.push(id); // new id found, add it to array 
     } 
    } 
} 
相關問題