Erreur jslint.

Winterboard Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   -  
Winterboard Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   259
 
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   Statut Membre Dernière intervention  
 
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