Problème fonction getElementsByClassName()

Fermé
nico_73 Messages postés 161 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 28 mai 2010 - 29 oct. 2009 à 18:31
Bonjour,

afin d'être compatible avec plusieurs navigateurs j'ai trouvé cette fonction getElementsByClassName() pour sélectionner des éléments d'une page html.

function getElementsByClassName(className, elm) {
	var selection = new Array();
	var regex = new RegExp("\\b" + className + "\\b");
	if(!elm) {
		elm = document;
	} else if(typeof(elm) == "string") {
		elm = document.getElementById(elm);
	}
	
	var elmts = elm.getElementsByTagName("*");
	for(var i=0; i<elmts.length; i++) {
		if(regex.test(elmts[i].className)) {
			//alert(elmts[i])
			selection.push(elmts[i]);
		}
	}
	return selection;
}


J'ai donc créé ce bout de code html pour l'exemple :

<p class="ro">sqdfs <strong>dfkls <a href="#" class="titi">jfl</a></strong> kdj sdjfksdjf <a href="#" class="titi">sdkjflsj</a> dfsd</p>
<p id="bidule" class="coco" style="left:13px">sqdfs <strong>dfklsjfl</strong> kdj sdjfksdjf <a href="#" class="titi">hoho</a> dfsd</p>


Lorsque je fait :

alert(getElementsByClassName('ro'));


Il me retourne : [object HTMLParagraphElement], ce qui me parait normal. Par contre, lorsque je fait ceci :

alert(getElementsByClassName('titi'));


Qui sont des classes mise sur les liens, il me retourne la valeur de "href" : http://domjs/#,http://domjs/#,http://domjs/#

J'ai du faire une erreur, mais je n'arrive pas à voir ou et ça fait 4H que je suis en train d'essayer de comprendre.

Pouvez-vous m'aider ?
Merci.
Bien cordialement.