Comment sélectionner toutes les balises <a> et enregistrer l'événement onclick?

J'essaie de sélectionner toutes les étiquettes <a> dans la page et de me onclick sur eux même.

Mes codes:

 document.getElementsByTagName('a').onclick = show; var show = function(){ alert('hahahha'); } 

Cela ne fonctionne pas et mon cerveau se frite maintenant. Des idées? Merci beaucoup.

Vous définissez l'attribut onclick sur le tableau d'éléments, et non sur chaque élément individuellement comme vous avez besoin. De plus, vous définissez le show après l'avoir utilisé.

 var elts = document.getElementsByTagName('a'); var show = function() { alert('hahahha'); } for (var i = elts.length - 1; i >= 0; --i) { elts[i].onclick = show; } 

Il est plus efficace d'itérer vers l'arrière à travers le tableau que de tester elts.length chaque fois. Si vous devez itérer en avant, stockez la longueur du tableau dans une variable pour une meilleure efficacité.

Vous devez affecter l'événement onclick à toutes les <a> tags comme suit:

 var s=document.getElementsByTagName('a'); var show = function(){ alert('hahahha'); } for (var i=0;i<s.length;i++) { s[i].onclick = show; } 

document.getElementsByTagName('a') renvoie un tableau, essayez ainsi ceci:

  var arr = document.getElementsByTagName('a'); for(var key in arr){ arr[key].onclick = show; } 

N'a pas testé mais ça devrait fonctionner

Pourquoi ne pas utiliser Jquery, il sera la solution la plus simple dans javascript.

Vous pouvez utiliser comme ci-dessous

 $("a").on("click", function(event){ alert('hahahha'); }); 

Reportez – vous à cette documentation. Vous pouvez utiliser Jquery 1.7 en avant.

Oui, nous pouvons résoudre le problème ci-dessus en utilisant à la fois java script et jquery:

Javascript:

  var aLinks=document.getElementsByTagName('a'); // returns array of all <a> link objects //Function to be bind with link object var show = function(){ alert("Now Show function has been binded...hahahhaha..!"); } //Now we have to bind click event with each link object. for(var i=0;i<aLink.length;i++){ aLinks[i].onclick=show; } 

Une autre façon de lier toutes les balises de lien avec n'importe quel événement est d'utiliser jQuery et Il fournit le moyen le plus simple pour ce genre de problèmes de liaison.

Mais pour cela, tout d'abord, nous devons inclure le fichier jquery.js javascript (mieux utiliser la dernière version).

JQuery:

 $(function(){ $("a").click(function(e){ alert("Now Show function has been binded...hahahhaha..!"); }); });