• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Methoden-Aufruf über DOM-Element.onclick

matiro65

New member
Guten Abend,

ich habe erneut eine Denkblockade:

Die Art und Weise wie die beiden unten stehenden Click-Ereignisse funktionieren verstehe ich nicht wirklich:

* Die Zeile die mit "btn1.ondblclick..." startet macht "fast" das was ich eigentlich will: Die Funktion obj1.fnTest wird ausgeführt, sobald die Schaltfläche betätigt wird. Allerdings mit einer mouse-event meldung im popup, statt "hallo", weil ich ohne die Funktions-Initialisierer "()" keine Parameter übergeben kann...?

* Die Zeile die mit "btn1.onclick..." startet verursacht, dass die Funktion einmalig bei der Initialisierung (ohne Klick auf die Schaltfläche) ausgeführt wird, es kommt das erwartete "hallo" im alert-Popup, aber wenn man später die Schaltfläche betätigt passiert nichts mehr.

Fürchte da habe ich irgendwas nicht verstanden, vielleicht kann mir jemand die Richtung weisen.

Danke und Gruß - Matthias


Code:
<!DOCTYPE html>

<html>
<head>
</head>
<body>
<script>
    
window.onload = function() {
        
    var obj1 = {
	fnTest: function(msg) {
            alert(msg);
	    }
	}

    var btn1 = document.createElement('button');
    btn1.ondblclick=obj1.fnTest;
    btn1.onclick=obj1.fnTest("hallo");
    btn1.appendChild(document.createTextNode("do something"));
    document.body.appendChild(btn1);
    }

</script>
</body>
</html>
 
Das Stichwort hier ist closure (hoffentlich hab ich das diesmal richtig gesagt):

btn1.ondblclick=function() {obj1.fnTest();};
sowie
btn1.onclick=function() {obj1.fnTest("hallo");};

Schau mal, ob das tut was du möchtest.
 
Aaah, sehr schön, kaum macht man's richtig schon funktionierts.

Vielen Dank, da weiß ich ja was ich heute lesen werde.

Gruß und guten Tag - Matthias
 
Zurück
Oben