Les cours javascript : getElementByClassName

Page d'introduction

Introduction

Infos

Lors d'un projet j'ai eu besoin de modifier de balises ayant une classe de la même valeur, pour cela j'ai créé une fonction getElementByClassName().
Finalement, j'ai abandonné cette idée mais je pense quelle pourrai être utile à quelqu'un.

Les fonctions qui suivent ont été testées sous Internet Explorer et Firefox

getElementByClassName

Définition

La fonction getElementsByClassName renvoie un tableau (Array) d'éléments. Le tableau est vide si il n'y a pas de résultat.
La fonction getElementsByClassName accepte comme paramètres :
- nomClasse, le nom de la classe recherché
- element, le noeud parent dans lequel on veut chercher.
Exemple de code :
document.getElementsByClassName = function(nomClasse, element) {
  var resulat = new Array();
  if(nomClasse!="" || typeof element == 'object'){
    var mesFils = element.getElementsByTagName('*');
    var exp_reg = new RegExp("(^|\s)" + nomClasse + "(\s|$)");
    for (var i = 0; i < mesFils.length; i++) {
      var laClasse = (mesFils[i].className)? mesFils[i].className : "";
      if(laClasse != "" && (laClasse == nomClasse || laClasse.match(exp_reg))){
        resulat.push(mesFils[i])
      }
    }
  }
  return resulat;
};

Attention, il est possible qu'il y ai un bug d'affichage au niveau de var exp_reg = new RegExp("(^|s)" + nomClasse + "(s|$)","g"), les "s" sont précédés de deux antislashs.

Complement

getClassName

La fonction getClassName permet de récupérer sous la forme d'un tableau l'ensemble des classes associées à un élément.
La fonction setClassName accepte comme paramètres :
- nomClasse, className d'un élément.
Exemple de code :
function getClassName (nomClasse) {
  var resulat = new Array();
  if(nomClasse!=""){
    var exp_reg = new RegExp("\s","g")
    var resultat = nomClasse.split(exp_reg);
  }
  return resulat;
};

Attention, il est possible qu'il y ai un bug d'affichage au niveau de var exp_reg = new RegExp("s","g") le "s" est précédé de deux antislashs.

setClassName

La fonction setClassName permet de remplacer une classe dans le className d'un élément.
La fonction setClassName accepte comme paramètres :
- element, élément dont on veut changer le className
- nomClasse, nom de la classe à remplacer
- newClasse, nom de la classe de remplacement
Exemple de code :
function setClassName (element,nomClasse,newClasse) {
  if(typeof element == 'object'){
    var maClasse = element.className;
    var exp_reg = new RegExp("(^|\s)" + nomClasse + "(\s|$)","g");
    maClasse=maClasse.replace(exp_reg, "$1"+newClasse+"$2");
    element.className=maClasse
  }
};

Attention, il est possible qu'il y ai un bug d'affichage au niveau de var exp_reg = new RegExp("(^|s)" + nomClasse + "(s|$)","g"), les "s" sont précédés de deux antislashs.