Frage zu Verhalten von EventHandler

Kahmoon

Erfahrenes Mitglied
Ich will in einem bestimmten Div alle Links auslesen und ihnen einen Listener für "click" verpassen. (Hintergrund ist das Redakteure dort Links einpflegen aber kein Plan von Javascript und HTML haben. Somit fällt es aus jedem Link ein "onclick" zu geben.)

Wenn ich die Seite mit folgendem Code aufrufe, führt er die Folgefunktion (popup) direkt aus. Warum? Sollte nicht erst bei onclick etwas passieren?

Javascript:
window.onload = function()
{
    var div = document.getElementById("mmtztv");
    var links = div.getElementsByTagName("a");
    for(var i=0;i<links.length;i++)
    {
        //Listener aufbauen        
        if (links[i].addEventListener) 
        {
            links[i].addEventListener("click", popup(links[i].href), true);
        } else if (links[i].attachEvent) {
            links[i].attachEvent("onclick", popup(links[i].href));
        } else {
            return false;
        }        
    }
 }
   
    function popup(url)
    {
        var win = window.open(url, "test", "width=800, height=600");
    }


HTML:
<div id="mmtztv">
    <a href="http://www.tz-online.de">Link 1</a>
    <a href="http://www.merkur-online.de">Link 2</a>
</div>
<a href="#link3">Link 3</a>


Wo ist der Fehler? :confused::confused:
 
Zuletzt bearbeitet von einem Moderator:
Sowohl addEventListener als auch attachEvent erwarten als 2. Parameter lediglich den Namen der Funktion, die Mitgabe von Parametern ist nicht möglich.


So kannst du es aber lösen:
Code:
for(var i=0;i<links.length;i++)
    {
      links[i].onclick=new Function('popup(this.href)');
    }
 
Echt? Verdammt ;). Alles klar....werde Deine Lösung versuchen.

Noch eine Frage. Bisher hatten die Links ein Parameter return false um nicht auf der Hauptseite den Link zu öffnen sondern nur im Popup.

HTML:
<a href="mein Link" onclick="meine funktion(this.href);return false;" >Mein Linktext</a>

Kann ich das aus der Funktion auch bewerkstelligen?
 
Das mit dem return kann da auch hinein...
Code:
for(var i=0;i<links.length;i++)
    {
      links[i].onclick=new Function('popup(this.href);return false;');
    }
schreib halt das dort hinein, was du direkt im onclick des Links notieren würdest :)
 
Alles klar..auch wenn ich es nicht ganz checke. Funktionieren tut es.... :rolleyes:

Gibts irgendwie ne Doku zu obj.onclick = ? Finde irgendwie nichts zu dieser Schreibweise. Das scheint ja in allen Browser zu klappen.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück