Avatar billede jonashn Nybegynder
10. november 2004 - 09:12 Der er 18 kommentarer og
1 løsning

hvorfor bruger man både minfunktion; og minfunktion()

Hvorfor bruger man f.eks. document.onkeypress=keyPress; istedet for document.onkeypress=keyPress(); ?
Og når man bare kalder en funktion hedder det altid
minfunktion(); ?
Avatar billede kalp Novice
10. november 2004 - 09:21 #1
forstår ikke javascript hehe
men mit gæt er

minfunktion();

er et metode kald.. og du kalder også metoden
Avatar billede kalp Novice
10. november 2004 - 09:23 #2
document.onkeypress=keyPress;

kunne forestille mig keyPress står for generelt alt på keyboardet...
men kunne ændres til fx enter.. så vil keyPress hedde noget andet...
onkeypress gemmer så på den info så den ved hvilken tast der skal reageres på.

andre må gerne rette mig:)=
Avatar billede plx Nybegynder
10. november 2004 - 09:37 #3
document.onkeypress=keyPress; her sætter du onkeypress lige med "adressen" på den funktion som skal kaldes. Følgende burde gøre forskellen klar:

function get_funktion(){
  return(keyPress);
}

document.onkeypress=get_funktion();

get_funktion() returnerer så en henvisning til den keyPress, som kaldes ved hvert tastetryk
Avatar billede powernodes Nybegynder
10. november 2004 - 09:41 #4
kalp du er hermed rettet, det er en værre gang nonsens det der :)

onkeypress syntax:

Inline:
<element onkeypress="" />: Alle platforme - eks:

    <textarea onkeypress="alert('test')"></textarea>

Navngivet script:
<script for="object" event="onkeypress">: IE only

Event property: object.onkeypress = handler;: Jscript (og dermed IE only)  eks:

    document.onkeypress = keyHandler;

    function keyHandler() {
      var key = window.event.keyCode;
      if (key !=0) {
        alert("ASCII:" + key);
      }
    }


Så det korte svar - fordi det er Jscript og ikke Javascript!
Avatar billede kalp Novice
10. november 2004 - 09:43 #5
powernodes:

Så lærte jeg da noget nyt!!: )
sådan går det når man prøver at blande java og javascript sammen hehehe
Avatar billede plx Nybegynder
10. november 2004 - 09:54 #6
powernodes, men du svarer da heller ikke på det egentlige spørgsmål: hvad er forskellen på

=min_funktion
og
=min_funktion()
Avatar billede plx Nybegynder
10. november 2004 - 09:56 #7
powernodes, men faktum er, at du faktisk heller ikke svarer på det egentlige spørgsmål..

hvad er forskellen på

=min_funktion
og
=min_funktion()
Avatar billede plx Nybegynder
10. november 2004 - 10:02 #8
Det var så ikke lige meningen med dobbelt indlæg. Skod net :/
Avatar billede powernodes Nybegynder
10. november 2004 - 10:03 #9
Det gør jeg da - læs igen.
Avatar billede olebole Juniormester
10. november 2004 - 13:04 #10
<ole>

Hermed bliver alle rettet, det er en værre gang nonsens det der :)
Om det handler om JavaScript eller JScript er rystende ligegyldigt. Følgende er derfor gældende for både JavaScript og JScript:

'document.onkeydown' er en event-handler på document-objektet. Når denne handling  finder sted (en tast på keyboardet aktiveres), skal den funktion, der står i den tilhørende event-handleren fyres af. Skriver du (naturligvis i script-tags):

function myAlert() {
  alert("Funktionen blev kaldt");
}
document.onkeydown = myAlert();

Forsøger koderen at sætte event-handleren _lig med_ et funktions-kald, hvilket er noget vrøvl. Resultatet er, at JavaScript vil forsøge at udføre koderens bøn og funktionen fyres af i samme øjeblik, denne linie parses ... det var jo ikke tanken  ;o)

Skriver du derimod:

function myAlert() {
  alert("Funktionen blev kaldt");
}
document.onkeydown = myAlert;

eller:

function myAlert() {
  alert("Funktionen blev kaldt");
}
document.onkeydown = function() {
  myAlert();
}

beder du JS om at lægge funktions-kaldet _i_ event-handleren. Dvs, at funktionen kaldes, hvergang handlingen (tastetryk) finder sted.

I det aller første eksempel kalder vi altså funktionen med 'myAlert()' ved forgæves at forsøge at sætte en event-handler lig med en funktion.
I de to andre lægger vi en reference til funktionen 'ned i' event-handleren og sørger for, at denne kaldes, når handlingen udføres.

For at imødekomme næste spørgsmål ("... hvorfor det?"), så er det blot en 'grammatisk' definition - à la:
"Hvorfor hedder det 'stille' om aftenen og 'stod' om morgenen?"
"Fordi du stillede din cykel på gaden i går aftes - og den stod på gaden i morges ... og sådan er det nu engang."

Håber, det hjalp lidt på forståelsen  :)

/mvh
</bole>
Avatar billede plx Nybegynder
10. november 2004 - 13:08 #11
Det er vel egentlig også hvad jeg skrev..
Avatar billede olebole Juniormester
10. november 2004 - 13:37 #12
Så har det altså ikke hjulpet på forståelsen ... nej, plx - du skrev det stik modsatte af, hvad du skrev  :)

Du skrev:
"document.onkeypress=get_funktion();

get_funktion() returnerer så en henvisning til den keyPress, som kaldes ved hvert tastetryk"

Nej ... skriver du sådan, vil funktionen blive fyret af én gang - nemlig når linien parses af JS-fortolkeren i browseren.
Funktionen vil derefter _aldrig_ fyres af ... heller ikke på 'document.onkeypress'  ;o)
Avatar billede olebole Juniormester
10. november 2004 - 13:38 #13
"nej, plx - du skrev det stik modsatte af, hvad jeg skrev  :)"

... skulle der stå  ;o)
Avatar billede plx Nybegynder
10. november 2004 - 14:08 #14
get_funktion()

returnerer jo så en henvisning til keyPress

keyPress vil så blive kaldt for hvert tastetryk..
Avatar billede plx Nybegynder
10. november 2004 - 14:11 #15
virker nu fint de gange jeg har testet..
Avatar billede plx Nybegynder
10. november 2004 - 14:12 #16
Vi kan godt blive enige om, at get_funktion() kun afvikkles een gang. Men når den ér blevet kørt, vil onkeypress indholde en henvisning til keyPress()
Avatar billede olebole Juniormester
10. november 2004 - 14:15 #17
Nå, Okay ... så forstår jeg, hvad du mener. Du har altså en funktion, der så hedder keyPress() (rigtig skidt navn til en funktion, da JS bruger samme ord).

Det kan du i pricippet godt, men det er måske lidt at gå over åen efter vand - hvorfor den da stort set heller aldrig ses brugt  :)
Avatar billede jonashn Nybegynder
11. november 2004 - 20:30 #18
Tak allesammen :-) Nu er jeg meget klogere
Olebole, læg et svar
Avatar billede olebole Juniormester
12. november 2004 - 05:37 #19
... s'gerne  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester