0

Essayer simplement d'identifier si des étiquettes sont cliquées sur n'importe quand et obtenir l'attribut href de l'étiquette cliquée à stocker dans la base de données.essayant d'obtenir l'attribut href de <a> marquer onclick - aucune erreur?

Pour tester je tente d'imprimer le href mais rien ne s'imprime à l'écran ET aucune erreur dans la console? Des idées?

// Anchor Tags - Capture the href of the link clicked 
var aTags = document.getElementsByTagName('a'); 

for (var i = aTags.length - 1; i >= 0; --i) { 
    aTags[i].onclick = function() { 
    var aTagHref = aTags[i].getAttribute("href"); 
     alert(aTagHref); 
    }; 
} 
+0

UTiLisATion 'ceci' ou event.target. La façon dont vous essayez de faire cela ne fonctionne pas parce que vous ne cachez pas 'i' à travers une fermeture. Donc, au moment où la boucle se termine, je serai aTags.length + 1 et donc tous les clics vont essayer de trouver un élément inexistant à l'intérieur des aTags. Essayez toujours d'utiliser event.target dans les gestionnaires d'événements, car il vous dira de quel élément provient l'événement sans qu'il soit nécessaire de le mettre en cache dans un tableau. – Shilly

Répondre

2

l'intérieur d'un écouteur d'événement vous n'aurez pas ce tableau d'éléments, et aussi, vous pouvez utiliser le this pour référencer le a cliqué.

Comme ceci:

var aTags = document.getElementsByTagName('a'); 
 

 
for (var i = aTags.length - 1; i >= 0; --i) { 
 
    aTags[i].onclick = function() { 
 
    var aTagHref = this.getAttribute("href"); 
 
     alert(aTagHref); 
 
    }; 
 
}
<a href="#asd">a</a> 
 
<br /> 
 
<a href="#asdf">b</a> 
 
<br /> 
 
<a href="#asdfg">c</a>

+0

Ça marche! Question rapide, quelle est la logique derrière la boucle for var i = aTags.length - 1; ? Ne sautons-nous pas sur l'index initial en soustrayant 1 de la longueur, c'est-à-dire au lieu d'itérer comme i = 4,3,2,1, nous interactionnons comme: 3,2,1 ... correct? – Shaz

+1

@Shaz, le cicle de vie dans ce cas est -> create 'var i = 3 - 1'; vérifier la condition; faire de la logique; décrémenter; vérifier la condition .... Donc, la valeur de 'i' va comme 2, 1 et 0 – Lucas

+0

Voilà mon point. Il ne fait pas la logique sur '3'. commençant. S'il y a 3 liens dans var i, ne fait-il pas juste la logique sur 2,1 0 et non 3nth? – Shaz