如何在表单中找到重复的ID?

时间:2012-07-26 07:32:46

标签: html forms field

我创建了一个包含大约800个字段的表单。在不知不觉中,我在表单中的几个字段中给出了相同的id。如何追踪它们?

6 个答案:

答案 0 :(得分:14)

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');
  }
});

希望这有帮助。

答案 1 :(得分:2)

这可能对您有所帮助

Source: Finding duplicate ID’s on an HTML page

  

在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);
}

答案 2 :(得分:1)

我已经创建了一个示例供您查看,它会在页面上的表单/元素中找到所有重复的ID,并将重复的ID名称打印到控制台。

数组contains方法取自this post

<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>

以上代码将输出以下内容:

  

重复:a

     

重复:d

答案 3 :(得分:1)

使用数组方法的单线程:

[].map.call(document.querySelectorAll("[id]"), 
     function (e) {
        return e.id;
     }).filter(function(e,i,a) {
        return ((a.lastIndexOf(e) !== i) && !console.log(e));
     })

记录每个重复项并返回一个包含id的数组(如果有的话)。

答案 4 :(得分:0)

有一个名为Dup-ID的Chrome扩展程序,如果您安装,只需按下按钮即可检查重复的ID。 安装链接:https://chrome.google.com/webstore/detail/dup-id-scans-html-for-dup/nggpgolddgjmkjioagggmnmddbgedice

答案 5 :(得分:-2)

通过defualt Notepad++语法高亮显示,如果您双击一个单词来选择它,它将突出显示同一单词的所有其他出现。你将不得不做一些(可能很多)手工工作重命名的事情,我的意思是因为字段不能提出他们自己的唯一名称。