Siechfred: Eventhandler per Javascript notieren, die 2te

Beitrag lesen

Mit einer anonymen Funktion sollte es gehen:
Nö... Tut nicht.

Könntest du bitte eine konkrete Fehlerbeschreibung liefern?

Ist ja auch kein Wunder.

Oh doch, das ist es.

Schließlich ist auch das wieder eine funktion. Wenn damit der onclick handler den Wert geliefert hötte, dann hätte es auch doLink getan. Ob die nun einen Namen hat oder nicht sollte unerheblich sein.

Das ist ein kleiner, aber sehr gravierender Unterschied. Ich fürchte, dass du das Prinzip noch nicht richtig verstanden hast, deshalb mal ein kleines Beispiel:

Javascript:

function doLink(s) {  
  alert(s);  
  return false;  
}  
  
function addEventToLinks () {  
  var a = document.links;  
  for(i = a.length - 1; i>=0; i--) {  
    a[i].onclick = function() { return doLink(this.href) }  
  }  
}  
  
window.onload = addEventToLinks;

Dazugehöriges HTML:

<body>  
  <ul>  
    <li><a href='foo'>foo</a></li>  
    <li><a href='bar'>bar</a></li>  
    <li><a href='baz'>baz</a></li>  
    <li><a href='boo'>boo</a></li>  
  </ul>  
</body>

Die Schreibweise a[i].onclick = function() { ... } ist verkürzt für a[i].onclick = new Function(" ... "). Damit erzeugst du ein neues Funktionsobjekt und weist dem Eventhandler eine Referenz auf dieses zu. Nur weil du schreibst: myFunc = new Function("alert('Boo!')"); wird die Funktion nicht automatisch ausgeführt, sondern du musst sie explizit über myFunc() aufrufen. Und so ist es in obigem Beispiel: Die referenzierte Funktion wird aufgerufen, sobald das Ereignis "Mausklick" eintritt.

Siechfred

--
Ich bin strenggenommen auch nur interessierter Laie. (molily)
Welcome To Carcass Cuntry || Steuerfreie Geburtsbeihilfen?  || RT 221 Erfurt-Altstadt i.V.