









Qui n'a jamais eu besoin de récupérer les listes des objets qui ont la même classe CSS ou la liste des objets qui on le même name ? Cette fonction conçut par Matthew Pennell répond parfaitement à tout ceci.
getElementsByAnything = function () { var elements = new Array(); for (var i=0,len=arguments.length;i<len;i++) { var element = arguments[i]; if (typeof element == 'string') { var matched = document.getElementById(element); if (matched) { elements.push(matched); } else { var allels = (document.all) ? document.all : document.getElementsByTagName('*'); var regexp = new RegExp('(^| )'+element+'( |$)'); for (var i=0,len=allels.length;i<len;i++) if (regexp.test(allels[i].className)) elements.push(allels[i]); } if (!elements.length) elements = document.getElementsByTagName(element); if (!elements.length) { elements = new Array(); var allels = (document.all) ? document.all : document.getElementsByTagName('*'); for (var i=0,len=allels.length;i<len;i++) if (allels[i].getAttribute(element)) elements.push(allels[i]); } if (!elements.length) { var allels = (document.all) ? document.all : document.getElementsByTagName('*'); for (var i=0,len=allels.length;i<len;i++) if (allels[i].attributes) for (var j=0,lenn=allels[i].attributes.length;j<lenn;j++) if (allels[i].attributes[j].specified) if (allels[i].attributes[j].nodeValue == element) elements.push(allels[i]); } } else { elements.push(element); } } if (elements.length == 1) { return elements[0]; } else { return elements; } }
Si un seul objet est trouvé, la fonction renvoie l'objet lui-même. Si plusieurs objets correspondent, la fonction renvoie un tableau d'objets.
Discussion