check for duplicate id

by danmana

HTML

<div id="img1"></div>
<div id="img2"></div>
<div id="im3g"></div>

JavaScript

(function() {
    var duplicates = {},size = 0;
    $('[id]').each(function() {
        var id = this.id,
            $obj = $('[id="' + id + '"]');
        if ($obj.length != 1 && !duplicates[id]) {
            console.warn('Found ' + $obj.length + ' duplicates of #' + id);
            duplicates[id] = $obj;
            size++;
        }
    });

    if (size) {
        console.error('You have ' + size + ' ids with duplicate DOM nodes');
        console.log(duplicates);
    } else {
        console.log('Ok: no duplicate IDs');
    }
})();

//best minification[298 bytes]:
//javascript:(function(c){var d={},s=0;$('[id]').each(function(){var i=this.id,o=$('[id="'+i+'"]');if(o.length!=1&&!d[i]){c.warn('Found '+o.length+' duplicates of #'+i);d[i]=o;s++}});if(s){c.error('You have '+s+' ids with duplicate DOM nodes');c.log(d)}else c.log('Ok: no duplicate IDs');})(console);

//v2: added jQuery detection, and popup message[674]
//javascript:(function(c){if(!$||!$.fn||!$.fn.jquery)alert('jquery not found!');else{var d={},s=0,e=$('<div style="position:fixed;top:0;left:50%;width:240px;margin-left:-120px;padding:5px;z-index:10001;display:none">').appendTo('body'),m,k;$('[id]').each(function(){var i=this.id,o=$('[id="'+i+'"]');if(o.length!=1&&!d[i]){c.warn('Found '+o.length+' duplicates of #'+i);d[i]=o;s++}});if(s){k='#f99';c.error(m='You have '+s+' ids with duplicate DOM nodes<br>Check console log for details.');c.log(d)}else{k='#9f9';c.log(m='Ok: no duplicate IDs')}e.html(m).css('backgroundColor',k).show();window.setTimeout(function(){e.fadeOut('slow',function(){e.remove()})},3000)}})(console);