Avatar billede morten_21 Nybegynder
11. februar 2006 - 15:55 Der er 11 kommentarer og
1 løsning

Bøvl med onkeypress..

Hej Eksperter.

Jeg har lidt knas med noget javascript. Koden skal fungere som scoringstavle, og tælle op når jeg trykker på en tast. Men pt. reagerer den ikke på det første tastetryk, og melder en Object Required fejl..

Kode:

<HEAD>

<SCRIPT LANGUAGE="JavaScript1.2">

function myreset() {
scorop1 = 0;
document.myform.myvalue.value = scorop1;
}

function myupdate() {

    if (window.event.keyCode == 114)
      {alert('Reset')};
    if (window.event.keyCode == 115)
      {alert('Start')};
    if (window.event.keyCode == 97)
      {alert('Pause')};
    if (window.event.keyCode == 32)
      {alert('Mål')};
    if (window.event.keyCode == 49)
      {document.myform.myvalue.value = scorop1++;
      setTimeout("myupdate();", 100);};
}

</SCRIPT>

</HEAD>

<BODY onKeyPress="myupdate()" onLoad="myreset(); myupdate();">


<form name="myform">
<input type="text" name="myvalue" style="border: 0px; font: 100px Verdana;">
</form>

Hvad er der galt her?
Avatar billede olebole Juniormester
11. februar 2006 - 16:08 #1
<ole>

Der er ikke nogen event med en keyCode, når du kalder funktionen via onload-event'en og setTimeout. Desuden er dit script-tag invalidt - og scriptet virker kun i IE. Det sidste har jeg ikke ændret på, men ellers ...:

<BODY onKeyPress="myupdate(window.event.keyCode)" onLoad="myreset()">

<SCRIPT type="text/JavaScript">
function myreset() {
    scorop1 = 0;
    document.myform.myvalue.value = scorop1;
}

function myupdate(kC) {
    if (kC == 114)
      {alert('Reset')};
    if (kC == 115)
      {alert('Start')};
    if (kC == 97)
      {alert('Pause')};
    if (kC == 32)
      {alert('Mål')};
    if (kC == 49)
      {document.myform.myvalue.value = scorop1++;
      setTimeout("myupdate("+kC+");", 100);};
}
</SCRIPT>



<form name="myform">
<input type="text" name="myvalue" style="border: 0px; font: 100px Verdana;">
</form>

/mvh
</bole>
Avatar billede morten_21 Nybegynder
11. februar 2006 - 16:21 #2
Hej Olebole

Tak for forslaget. Mht. IE kompatibilitet så overlever jeg, det er kun til offline brug.

Har du prøvet at køre scriptet? Når man trykker på "1" begynder tælleren at tælle op med 1 for hvert 0,1 sekund.. Den tiltænkte funktion er at man trykker på "1" for hver scoring, hvor den så tæller op én af gangen. Mine bordhockey spillere skal godt nok gå til den, hvis der skal scores 10 gange i sekundet :-)
Avatar billede olebole Juniormester
11. februar 2006 - 16:24 #3
;o)
Avatar billede morten_21 Nybegynder
11. februar 2006 - 16:48 #4
Æhm, har du et tip til hvordan jeg kan få den til at holde op med det?
Avatar billede olebole Juniormester
11. februar 2006 - 16:49 #5
- holde op med hvad?
Avatar billede morten_21 Nybegynder
11. februar 2006 - 16:53 #6
Ah, jeg fik ikke forklaret mig godt nok. Se her:

Min oprindelige kode, der _virker_ på nær det første tastetryk, og "object required" fejl: http://www.dmorten.dk/temp/eks1.html

Dit forslag: http://www.dmorten.dk/temp/eks2.html <-- der kommer ingen fejl, men tælleren tæller op selv, og ikke kun ved hvert tastetryk.
Avatar billede olebole Juniormester
11. februar 2006 - 16:56 #7
Du må forklare, hvad der præcist skal ske. Der er ikke nogen ændring i det, jeg har skrevet - bortset fra, at jeg har fjernet den fejl, der stoppede optællingen  :)
Avatar billede morten_21 Nybegynder
11. februar 2006 - 17:06 #8
Optællingen skal stoppes :-)

Funktionen skal være således at man trykker på tasten, hver gang der scores, og så tæller den én op, og venter på næste tastetryk. Se på eks1.html. Selve funktionaliteten er i orden, bortset fra at første tastetryk ignoreres.
Avatar billede olebole Juniormester
11. februar 2006 - 17:43 #9
Så sletter du vel bare din timeout:

<SCRIPT type="text/JavaScript">
function myreset() {
    scorop1 = 0;
    document.myform.myvalue.value = scorop1;
}

function myupdate(kC) {
    if (kC == 114)
      {alert('Reset')};
    if (kC == 115)
      {alert('Start')};
    if (kC == 97)
      {alert('Pause')};
    if (kC == 32)
      {alert('Mål')};
    if (kC == 49)
      {document.myform.myvalue.value = scorop1++};
}
</SCRIPT>
Avatar billede olebole Juniormester
11. februar 2006 - 17:46 #10
Mjaaahhhh ... sådan:

    if (kC == 49)
      {scorop1++;document.myform.myvalue.value = scorop1};
Avatar billede morten_21 Nybegynder
11. februar 2006 - 17:52 #11
YES! Dér var den :-) Kanonade - jeg siger mange tak!
Avatar billede olebole Juniormester
11. februar 2006 - 18:01 #12
Selvtak ... og tak for points  :)
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