Table des matières
Niveau
..........
En rapport...

getElementsByAnything le rêve du développeur

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.

Code

javascript
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;
		}
	}

Fonctionnement

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.

Le nombre d'argument de la fonction est illimité

Exemple

javascript
var ret = getElementsByAnything("div","maClasseCSS");


24/05/2007 09:51 -

iDo –