









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 :
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
Voici la fonction :
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
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>