2010-11-23 8 views

Antwort

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; 
    } 
} 

Demo: http://jsfiddle.net/FVWqT/1/

Hinweis, wenn Sie mehr als fünf Anker haben, und wollen nur bestimmte diejenigen zielen, könnten Sie nach Klasse filtern möchten, zum Beispiel:

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

Sie besser diesen Code in das Onload-Ereignis des Dokuments haben , damit alle Anker-Tags sicher da sind. Auch kleinere Tippfehler korrigierend, sollte es sein: if (anchors [i] .className == "etwas") {:-) –

+0

@Shadow Wizard - danke, ich habe jetzt den Tippfehler behoben. – karim79

+0

Prost, mein Vergnügen .. übrigens wird es nicht effizienter sein, die gleiche Funktion zu verwenden? –

1

Anstatt für jeden Link in der Seite einen onclick-Handler zu definieren, können Sie für eine bessere Leistung Event-Delegierung für Links-Container verwenden (diese Technik passt perfekt zu Ihrer Aufgabe), z

(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 
     } 
    } 
})(); 

Sehen Sie ein funktionierendes Beispiel hier: http://jsfiddle.net/fcalderan/MSvvh/

+0

Würde dies in allen Browsern funktionieren? – Eric

+0

Die Ereignisdelegierung funktioniert aufgrund von Ereignisblasen in allen aktuellen Browsern. Sie erfassen den Klick, wenn das Ereignis im Container eintrifft. –

1

Keine komplexen Konstrukte benötigt, versuchen Sie es, um sich selbst in der Adressleiste:

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