2010-11-23 7 views

Répondre

3
var anchors = document.getElementsByTagName("a"); 

for(var i = 0; i < anchors.length; i++) { 
    anchors[i].onclick = function() { 
     alert(this.id); 
     doStuff(id); 
     return false; 
    } 
} 

Démo: http://jsfiddle.net/FVWqT/1/

Notez que si vous avez plus de cinq points d'ancrage, et que vous voulez cibler uniquement ceux spécifiques, vous voudrez peut-être filtrer par classe, par exemple:

var anchors = document.getElementsByTagName("a"); 

for(var i = 0; i < anchors.length; i++) { 
    if(anchors[i].className == "something") { 
     anchors[i].onclick = function() { 
      alert(this.id); 
      doStuff(id); 
      return false; 
     } 
    } 
} 
+0

il vaut mieux avoir ce code dans l'événement onload du document , de sorte que toutes les étiquettes d'ancrage seront là à coup sûr. corrigeant aussi les fautes mineures, cela devrait être: if (ancres [i] .className == "quelque chose") {:-) –

+0

@Shadow Wizard - merci, j'ai corrigé la faute de frappe. – karim79

+0

acclamations, mon plaisir .. au fait, il ne sera pas plus efficace d'utiliser la même fonction? –

1

Au lieu de définir un gestionnaire onclick pour chaque lien dans la page, pour une meilleure performance, vous pouvez utiliser la délégation d'événements sur le conteneur de liens (cette technique correspond parfaitement à votre tâche), par exemple

(function() { 
    var divcnt = document.getElementById('linkcnt'); 
    divcnt.onclick = function(evt) { 

     var event = (evt || window.event), 
      target = (event.target || event.srcElement); 

     if (evt.target.tagName === 'A') { 
      // event.target is DOM reference to link you clicked 
      // evt.target.id is the ID; 
      alert(evt.target.id); 

      //callmyfunction(event.target) // Call a function with DOM reference 
     } 
    } 
})(); 

Voir un exemple de travail ici: http://jsfiddle.net/fcalderan/MSvvh/

+0

Cela fonctionnerait-il dans tous les navigateurs? La délégation d'événements – Eric

+0

fonctionne dans tous les navigateurs actuels en raison de la survenue d'événements. Vous capturez le clic lorsque l'événement arrive dans le conteneur. –

1

Aucun constructions complexes nécessaires, essayer votre auto dans la barre d'adresse:

javascript:(
    function() { 
    for (var i=0; i<document.links.length; i++) 
     document.links[i].onclick = function() { 
     return confirm(this.href+'\nORLY?') 
     }; 
    } 
)(); 
Questions connexes