我创建了一个包含大约 800 个字段的表单。不知不觉中,我为表单中的几个字段提供了相同的 id。如何追踪它们?
6 回答
http://validator.w3.org/将是方便的解决方案。但是使用jquery你可以做这样的事情:
//See your console for duplicate ids
$('[id]').each(function(){
var id = $('[id="'+this.id+'"]');
if(id.length>1 && id[0]==this) {
console.log('Duplicate id '+this.id);
alert('duplicate found');
}
});
希望这可以帮助。
这可能会帮助你
在 HTML 页面上查找重复的 ID
作者 Eneko Alonso 于 2011 年 5 月 6 日
看起来有时我们忘记了元素 ID 在 HTML 页面上是唯一的。这是我刚刚编写的用于在页面上查找重复 ID 的一些代码(在浏览器的 javascript 控制台上运行代码):
var idList = {};
var nodes = document.getElementsByClassName('');
for (var i in nodes) {
if (!isNaN(i) && nodes[i].id) {
idList[nodes[i].id] = idList[nodes[i].id]? idList[nodes[i].id]+1:1;
}
}
for (var id in idList) {
if (idList[id] > 1) console.log("Duplicate id: #" + id);
}
我创建了一个示例供您查看,它会在页面上的表单/元素中找到所有重复的 ID,并将重复的 ID 名称打印到控制台。
数组contains
方法取自这篇文章。
<html>
<body>
<form id="frm">
<input type="text" id="a" />
<input type="text" id="b" />
<input type="text" id="c" />
<input type="text" id="d" />
<input type="text" id="e" />
<input type="text" id="f" />
<input type="text" id="a" />
<input type="text" id="h" />
<input type="text" id="i" />
<input type="text" id="j" />
<input type="text" id="d" />
<input type="text" id="l" />
</form>
</body>
<script type="text/javascript">
Array.prototype.contains = function(obj) { //Add a 'contains' method to arrays
var i = this.length;
while (i--) {
if (this[i] === obj) {
return true;
}
}
return false;
}
frm = document.getElementById('frm'); //Get the form
els = frm.getElementsByTagName('input'); //Get all inputs within the form
ids = new Array(els.length); //Create an array to hold the IDs
for(e = 0; e < els.length; e++) { //Loop through all of the elements
if(ids.contains(els[e].id)) //If teh array already contains the ID we are on
console.log('Duplicate: '+els[e].id); //Print 'Duplicate: {ID}' to the console
ids.push(els[e].id); //Add the ID to the array
}
</script>
</html>
上面的代码将输出以下内容:
重复:一个
重复:d
仅使用数组方法的 One-ish 班轮:
[].map.call(document.querySelectorAll("[id]"),
function (e) {
return e.id;
}).filter(function(e,i,a) {
return ((a.lastIndexOf(e) !== i) && !console.log(e));
})
记录每个重复项并返回一个包含 id 的数组(如果找到)。
有一个名为 Dup-ID 的 Chrome 扩展,如果你安装它,你只需要按下按钮来检查重复的 id。安装链接:https ://chrome.google.com/webstore/detail/dup-id-scans-html-for-dup/nggpgolddgjmkjioagggmnmddbgedice
默认情况下, Notepad++具有语法突出显示功能,如果您双击一个单词来选择它,它将突出显示同一单词的所有其他出现。您将不得不做一些(可能很多)手动工作来重命名事物,我的意思是因为字段无法提出自己的唯一名称。