Erreur jslint.

Fermé
Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009 - 16 mars 2009 à 12:14
Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009 - 16 mars 2009 à 13:41
Bonjour,

J'ai ce bout de code qui dons jslint donne l'erreur suivante:" Be careful when making functions within a loop. Consider putting the function in a closure."
  function url () {
    var a = document.getElementsByTagName("a");
    for (var i = 0; i < a.length;i++) {
      if (a[i].className.match("noeffect")) {
      }
      else {
        a[i].onclick = function () {
          window.location = this.getAttribute("href");
          return false;
        };
      }
    }
  }    


Donc j'ai remplacé la fonction par:

function href() {
    window.location = this.getAttribute("href");
    return false;
}

function url() {
        var a = document.getElementsByTagName("a");
        for (var i = 0; i < a.length; i++) {
            if (a[i].className.match("noeffect")) {}                    
            else {
                a[i].onclick = href();
            };
        }
    }


Mais ca ne marche pas :(. Auriez vous une idee pourquoi la fonction ne fonctionne pas?
Merci beaucoup :).

Christopher

2 réponses

vignemail1 Messages postés 1246 Date d'inscription vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
16 mars 2009 à 12:59
C'est la portée du this dans la function href(). this désigne l'objet, hors lorsque tu l'utilise comme cela, tu perds la référence vers l'objet, donc il faut le passer en paramètre de la fonction href()
0
Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009
16 mars 2009 à 13:41
Ah oui je vois! :) merci

Mais york a t-il une manière de retenir l'objet? Ou une autre solution??
Merci beaucoup pour ton aide :)
0