Une demande qui revient souvent et qui n'est pas implémenté de base dans JQuery sans extension...
le but, recupérer un tableau d'elements au moyen d'un filtre sur l'id
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <script type="text/javascript">
document.getElementsByReg=function(reg){
var tabReg=new Array();
var tabElts=document.getElementsByTagName('*');
var TEL=tabElts.length;
i=0;
while(tabElts[i]){
if(tabElts[i].id){
if(reg.test(tabElts[i].id)){tabReg.push(tabElts[i]);}
}
i++;
}
return tabReg;
}
</script> |
un exemple de code html:
1 2 3 4 5 6 7 8 9 10 11
|
<body>
<div id="_3">
<div id="mondiv1">truc</div>
<div id="mondiv2">truc</div>
<div id="madiv3">truc</div>
<div id="madiva">truc</div>
<div id="mandiv5">truc</div>
<div id="mondivb">truc</div>
</div>
</body> |
et l'utilisation du code:
alert(document.getElementsByReg(/\d/).length)"
retournera ici un alert du nombre l'elements ayant du numérique dans leur id ...
3 limitations à ce script:
1) il faut maitriser les regExp pour s'en servir
2) si le paramètre passé à la fonction n'est pas une expression régulière il retourne un array vide
3)si tout se passe bien il retourne un tableau des elements dans l'ordre du flux html
Partager