Niveau
..........
En rapport...

Quoi

Vous connaissez déjà les getElementById et getElementByTagName.
Et bien voici getElementsBySelector !
Cette fonction permet d'obtenir un tableau qui contient tous les objets donc le sélecteur correspond à la demande.
Ex :

javascript
var lst= getElementsBySelector('div.h');
//Renvoie la liste des div avec la classe 'h'
var lst= getElementsBySelector('span h1');
//Renvoie la liste des H1 contenu par des span
 
//Ensuite, traitez lst comme vous le feriez avec getElementByTagName

Code

Voici la fonction :

javascript
function getElementsBySelector(selector){
//Extracted from nifty.js
	var i,selid="",selclass="",tag=selector,f,s=[],objlist=[];
	if(selector.indexOf(" ")>0){  //descendant selector like "tag#id tag"
		s=selector.split(" ");
		var fs=s[0].split("#");
		if(fs.length==1) return(objlist);
		f=document.getElementById(fs[1]);
		if(f) return(f.getElementsByTagName(s[1]));
		return(objlist);
	}
	if(selector.indexOf("#")>0){ //id selector like "tag#id"
		s=selector.split("#");
		tag=s[0];
		selid=s[1];
    }
	if(selid!=""){
		f=document.getElementById(selid);
		if(f) objlist.push(f);
		return(objlist);
    }
	if(selector.indexOf(".")>0){  //class selector like "tag.class"
		s=selector.split(".");
		tag=s[0];
		selclass=s[1];
    }
	var v=document.getElementsByTagName(tag);  // tag selector like "tag"
	if(selclass=="")
		return(v);
	for(i=0;i<v.length;i++){
		if(v[i].className.indexOf(selclass)>=0)
			objlist.push(v[i]);
    }
	return(objlist);
}

iDo 28/12/2005 13:30