2010-11-16 228 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 
     } 
    } 
} 
相关问题