Как найти дубликаты идентификаторов в форме?

Я создал форму, содержащую около 800 полей. Не зная, что я дал один и тот же идентификатор для нескольких полей в форме. Как их отследить?

 Simone26 июл. 2012 г., 09:34
быстрое решение:validator.w3.org
 Michael Peterson26 июл. 2012 г., 09:37
Notepad ++ или текстовый Wrangler найти и заменить, чтобы изменить их
 Joey26 июл. 2012 г., 09:38
Майкл, я думаю, они хотят найти дубликаты. Поиск / замена работает хорошо, только если вы знаете, что ищете.
 Jan Hančič26 июл. 2012 г., 09:34
Предоставьте больше деталей. В какой форме у вас есть HTML-форма?

Ответы на вопрос(6)

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

Регистрирует каждый дубликат и возвращает массив, содержащий идентификаторы, если таковые были найдены.

он находит все дубликаты идентификаторов в форме / элементе на странице и печатает имена дубликатов идентификаторов на консоли.

Массив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>

Приведенный выше код выведет следующее:

Duplicate: a

Duplicate: d

Решение Вопроса

http://validator.w3.org/ будет удобным решением. Но используяjquery Вы можете сделать что-то вроде этого:

//See your console for duplicate ids

$('[id]')..id+'"]');
  if(id.length>1 && id[0]==this) {
    console.log('Duplicate id '+this.id);
    alert('duplicate found');
  }
});

Надеюсь это поможет.

Источник: поиск дублирующихся идентификаторов на странице HTML

Finding duplicate ID’s on an HTML page

Written by Eneko Alonso on May 6, 2011

Looks like sometimes we forgot element ID’s are meant to be unique on a HTML page. Here is a little bit of code I just wrote to find duplicate ID’s on a page (run the code on your browser’s javascript console):

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);
}
 26 июл. 2012 г., 09:44
@ Джой, я отредактировал свой ответ, буду иметь в виду, спасибо
 26 июл. 2012 г., 09:38
Это будет работать, просто отредактируйте его так, чтобы строка,var nodes = document.getElementsByClassName('');, изменено наvar nodes = document.getElementsByTagName('input');

Notepad ++ имеет подсветку синтаксиса, что если дважды щелкнуть одно слово, чтобы выделить его, оно выделит все другие вхождения того же слова. Вам придется выполнить некоторые (вероятно, много) ручные переименования, я имею в виду, поскольку поля не могут иметь свое собственное уникальное имя.

 26 июл. 2012 г., 09:39
Это будет около 1600 кликов ...
 26 июл. 2012 г., 09:43
Лучше начать. Он должен иметь представление о том, где находятся дубликаты.

которое, если вы устанавливаете, вам просто нужно нажать кнопку, чтобы проверить дублированные идентификаторы. Ссылка установки:https://chrome.google.com/webstore/detail/dup-id-scans-html-for-dup/nggpgolddgjmkjioagggmnmddbgedice

 18 июл. 2016 г., 09:46
Он также распечатывает все идентификаторы, найденные на странице.
 26 июл. 2012 г., 09:39
Это будет около 1600 кликов ...
 26 июл. 2012 г., 09:43
Лучше начать. Он должен иметь представление о том, где находятся дубликаты.

Ваш ответ на вопрос