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

Discussion

christian, 01/11/2007 15:59:

excellent ce script ! j'ai trouvé plusieurs fonctions getElementsByClass ou ClassName …etc mais aucune qui fonctionne (et pourtant des gens sérieux ceux qui les mettent en ligne !) mais alors celle-ci, getElementsBySelector(), est géniale. Bon, je n'ai pas encore testé avec une chaine de sélecteur type “div#contenu a.lienExterne” mais ça devrait fonctionné il me semble, non ? quoiqu'il est soit, merci.

<a href=“http://krisjanlav.free.fr/”>Christian</a>

 
Si vous ne pouvez pas lire les lettres, tlchargez ce fichier WEV et coutez les.