Téléchargement
illégal

Javascript - Chercher des éléments par IDs


Bonjour à tous,

Cet article s'adresse aux gens qui se demandent comment chercher des éléments en fonction de leur ID. C'est à dire quand celui-ci match une expression régulière.

Problème


Vous connaissez déjà tous la méthode getElementById(id) qui permet de renvoyer l'unique élément possédant cet ID (puisqu'un ID est nécessairement unique).

Vous connaissez également la méthode getElementsByTagName(tagName) qui renvoie un tableau contenant tous les éléments possédant le tag indiqué.

Et bien il existe certains cas où ces deux solutions ne suffisent pas.

Par exemple : vous avez des carrés sur votre site ; quand l'utilisateur clique sur un bouton, chaque carré change de taille, chacun avec une nouvelle taille qui lui est propre. Vous avez donc besoin d'avoir la liste de leurs IDs pour les gérer. Deux solutions s'offrent à vous :
  • Chaque fois que vous ajoutez un carré, vous incrémentez manuellement une liste des IDs.
  • Vous possédez une boucle qui parcours le document à la recherche des carrés, ainsi la méthode s'adapte directement au code. Et c'est là que le bât blesse ! Comment récupérer tous les IDs qui se ressemble, sachant que vous ne connaissez pas le nombre exact de carrés (donc pas de boucle) et que vous ne savez pas où ils se trouvent dans la page (donc pas de while) !?

Solution


Je vous propose ici une méthode nommée getElementByRegexId. Cette méthode prend deux paramètres, à savoir :
  • L'expression régulière que doivent matcher les IDs.
  • [Fac] Le nom de la balise sur laquelle chercher. Si rien n'est indiqué, on cherche sur toutes les balises.


Le principe est simple : on parcours les éléments récupérés via getElementsByTagName, on teste leur ID et s'il matche l'expression régulière, on l'ajoute à un tableau.

function getElementsByRegexId(regexpParam, tagParam) {  
    // Si aucun nom de balise n'est spécifié, on cherche sur toutes les balises  
   tagParam = (tagParam === undefined) ? '*' : tagParam;  
   var elementsTable = new Array();  
   for(var i=0 ; i<document.getElementsByTagName(tagParam).length ; i++) {  
    if(document.getElementsByTagName(tagParam)[i].id && document.getElementsByTagName(tagParam)[i].id.match(regexpParam)) {  
     elementsTable.push(document.getElementsByTagName(tagParam)[i]);  
    }  
   }  
   return elementsTable;  
  }


Exemples d'utilisation :
var divCarres = getElementsByRegexId(/_carre.*/, "div");  
var tousLesCarres = getElementsByRegexId(/_carre.*/);  


Voilà, libre à vous de l'améliorer, d'ajouter des options etc etc...
J'espère en tous cas que cela vous aura été utile !
Publié par Mihawk - Dernière mise à jour le 27 septembre 2011 à 12:37 par Mihawk
Ce document intitulé « Javascript - Chercher des éléments par IDs » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Suggestions
  •  Javascript - Chercher des éléments par IDs
  •  [javascript] changer une image sur onclick (Résolu) » Meilleure réponse: Et pour info, tout le monde s'en fout vu la date mais document.getElementById("image").src = Dossier+Nom[Numero]; fonctionne très bien !! Suffit juste de ne pas mettre de majuscule à GetElementById. @+
  •  Javascript tag sous element d'un id (Résolu) » Bonjour, a tous Voila jai un code qui creer des formulqire en boucle <?php ... while (($none = mysql_fetch_array($legacy))) { ... $tree .= '<form id="'.$none[0].'" method="post" action="" style="visibility:hidden;"> <table><tr><td class="part"...
  •  Javascript - l'objet Array » Articles : Les particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
  •  [javascript] Libérer une case de tableau ? (Résolu) » Meilleure réponse: si l'ordre des éléments du tableau n'est pas important, on peut remplacer l'élément à supprimer par le dernier élément du tableau et ensuite on fait un pop. for(i=0;i<tab.length;i++) if(tab[i]==nom) { tab[i]=tab[tab.length-1]; ta
  •  [html] cacher ou afficher des éléments (Résolu) » Meilleure réponse: Il faut faire ça en javascript. Tu mets ton texte dans une div de cette façon : <div id="id_div_1" style="display:none;"> Texte à masquer, afficher </div> Et sur ton lien a href="" onclick="javascript:visibilite('id_div'_1); return fals
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Les piles et les files en Javascript
Créer un build avec Dojo