GetElementsByClassName non comptible IE7 ?

Fermé
nico_73 Messages postés 161 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 28 mai 2010 - 26 oct. 2009 à 21:24
nico_73 Messages postés 161 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 28 mai 2010 - 27 oct. 2009 à 08:08
Bonjour,

Voila, j'ai cru comprendre que getElementsByClassName() en javascript, n'était pas compatible IE7. Dites moi si je me trompe ;).

j'ai donc créé une fonction qui pourrait pallier à ce problème, la voici :

function getElementsByClassName(el) {
	var ret = null;
	
	if(!(ret = doc.getElementsByClassName)) {
		doc.getElementsByClassName = function(el) {
			var allEl = doc.getElementsByTagName('*');
			var i = 0
			while(elm = allEl[i++]) {
				if(elm.className == el) {
					ret = elm.className;
				}
			}
		}
	}
	
	return ret;
}


Mais je n'ai pas pas l'occasion de la tester sur IE7 car j'ai fait les dernière mise à jour. Est ce que quelqu'un pourrait me dire si elle fonctionne ?

Je vous remercie d'avance.
Bien cordialement.

2 réponses

Utilisateur anonyme
26 oct. 2009 à 22:03
Aucune idée, je n'ai pas IE7 mais ce qui est certain, c'est que tu n'es pas le premier à qui ça arrive...

http://www.javascriptfr.com

Et la solution est là :

var q = document.getElementById("pick_content").contentWindow.document;
if (document.getElementsByClassName){
        q = q.getElementsByClassName('theclass');
         ...
}
 else{ // IE
          var i = 0;
          var div = q.getElementsByTagName("div");
          while (element = div[i++]) {
                 if (element.className == " theclass ") {
                        ...
                 }
          }
}


0
nico_73 Messages postés 161 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 28 mai 2010
27 oct. 2009 à 08:08
En effet, mon code à l'air de ressembler à celui là ;) sauf que je l'appel un peut différemment :

if(!document.getElementsByClassName(el)) {
	elm = document.getElementsByClassName == maClass.getElementsByClassName(el);
}


Merci pour ton bout de code. Par contre si quelqu'un pouvait me confirmer que ça fonctionne bien.

Merci
0