|
Software- und Webentwicklung Planung, Programmierung und Administration
UML, JavaScript/DOM, ASP, JSP, PHP, Apache, MySQL, Python, Perl (...) |
|
Themen-Optionen | Ansicht |
08.11.2005, 22:07 | #1 (permalink) |
Registriert seit: 26.07.2005
Alter: 37
Beiträge: 38
|
[Javascript] Funktionsaufrufe mit und ohne Klammern () ?
Ich steig grad in "Web2.0" ein und versuch daher, in javascript ein bischen durchzusteigen; bis jetzt hab ich js immer für relativ unnötig im web gehalten, aber wenn mans so schön "unobtrusive" (unaufdringlich) verwendet, isses doch ganz nett
Nunja, ich hab mir 2 Funktionen gebastelt, die einmal ein Popup generieren und zum zweiten zellen einer tabelle mit nem rollover-effekt versehen; was beides auch ganz gut funktioniert (wenn gewünscht geb ich den Code noch dazu). Meine Frage nun: warum funktioniert folgendes? Code:
window.onload = init; function init() { doTableRowRollover(); doWebcamPopup(); } function doWebcamPopup() { [...] } function doTableRowRollover() { [...] } Code:
window.onload = init(); function init() { doTableRowRollover(); doWebcamPopup(); } Mein logisches Verständnis sagt mir ja eher, dass die Klammern hinmüssen... warum also nicht? Ich hab dann noch ein wenig rumexperimentiert... und siehe da, wenn ich die klammern in der funktion init() weglasse, macht er teilweise auch probleme... Ich verstehs ned Kann mir jemand erklären, warum dies so ist? Und: Weis jemand eine Seite wo "die Unterschiede zu php, etc." bzw. einfach die "Besonderheiten" an JS beschrieben sind? |
09.11.2005, 22:55 | #2 (permalink) |
|
AW: [Javascript] Funktionsaufrufe mit und ohne Klammern () ?
JavaScript ist eine sehr komische Sprache, bei der mal Regeln vergeblich sucht.
Und von Browser zu Browser wird es auch anderst verarbeitet. window.onload => Wenn die aktuelle Seite geladen ist init => Name einer Funktion window.onload = init; => Wenn aktuelle Seite geladen ist bitte init() ausführen Ok das hast du dir bestimmt auch gedacht. (Haben wir alle gedacht :P ) Aber irgendwo hab ich sowas ähnliches schonmal gesehen, deshalb glaub ich das es auch so ist. Jedoch verstehe ich genau wie du den Zusammenhang nicht so richtig. Alles was wir tun ist einer Variable (window.onload) eine Kopie unserer Funktion, oder eine Referenz zu unserer Funktion zu übergeben.
__________________
https://savetheinternet.info/ |
10.11.2005, 07:42 | #3 (permalink) |
Registriert seit: 26.07.2005
Alter: 37
Beiträge: 38
|
AW: [Javascript] Funktionsaufrufe mit und ohne Klammern () ?
hmja, das ist mir eigentlich schon klar...
in gewissem sinne läuft das ja in anderen programmiersprachen genauso: wir weisen einer variable den wert einer funktion zu, d.h. die funktion wird ausgeführt, und der rückgabewert (wenns einen gibt) steht dann in der variable... schön und gut. Seltsam find ich die Notation... Warum klappts ohne klammern?? In anderen sprachen müssen funktionsaufrufe immer mit klammern angegeben werden. Und warum klappts mit klammern nicht.? |
11.11.2005, 13:38 | #4 (permalink) |
|
AW: [Javascript] Funktionsaufrufe mit und ohne Klammern () ?
Pfuscherei beim Design von JavaScript 1.0
__________________
https://savetheinternet.info/ |
13.11.2005, 00:29 | #5 (permalink) |
Registriert seit: 26.07.2005
Alter: 37
Beiträge: 38
|
AW: [Javascript] Funktionsaufrufe mit und ohne Klammern () ?
Na du mavhst es dir einfach... ;-) Nun gut, es funktioniert ja so... (ich hab nur angst, dass es mir andauernd mit javascript wieder so gehen wird ) |
17.06.2009, 01:23 | #6 (permalink) |
Registriert seit: 17.06.2009
Beiträge: 1
|
Wenn du einen normalen Funktionsaufruf hast, dann schreibst du folgende Syntax:
variable = funktionsname(param_1, param_2,...); -->Die Funktion wird durchlaufen und der/die Rückgabewert/e werden an die Variable/Array zurückgegeben, ganz herkömmlich mit Klammern! Anders sieht es bei Ereignissen aus: Syntax: document.eventname = funktionsname; Aufpassen, die Funktion bekommt das Event zugewiesen, also muss die eigentliche Funktion einen Parameter bekommen, etwa "funktionsname(Ereignis)" Als Beispiel habe ich auf selfhtml folgendes gefunen: <html><head><title>Test</title> <script type="text/javascript"> function LayerPosition (Ereignis) { if (document.layers) { document.layers[0].left = Ereignis.pageX; document.layers[0].top = Ereignis.pageY; } else if (document.getElementById) { document.getElementById("layer").style.left = Ereignis.pageX + "px"; document.getElementById("layer").style.top = Ereignis.pageY + "px"; } } document.onmouseup = LayerPosition; </script> <style type="text/css"> #layer { position:absolute; top:100px; left:100px; width:100px; height:100px; background-color:#FFE0FF; border:solid 1px #000000; } </style> </head><body> <div id="layer">Ein Layer</div> <p>Klicken Sie irgendwo ins Dokument und der Layer folgt der Maus dorthin.</p> </body></html> mfg Chris |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|