Jochen Gebauer: Willkür beim unterbrechen einer Funktion

Hallo,

ich schreibe gerade ein Programm das dem Anwender verschiedene Zeitfenster vorgibt in denen er etwas machen soll (Psychologische Reaktionszeit-Studie).

die Funktionen unten sollen dafür sorgen, dass nachdem die "s" Taste für eine definierte Zeit (hier 501 ms) gedrückt ist ein Wort auf dem Bildschirm erscheint.

Was jetzt passiert ist, dass das meistens funktioniert - ABER NICHT IMMER - und was ich noch weniger verstehe: Wenn ich Die Zeit auf >501 setze, dann funktioniert es überhaupt nicht (d.h. ich drücke eine Ewigkeit und das Wort erscheint einfach nicht. Wenn ich die Taste dann loslasse, dann meldet das Programm, dass ich zu früh losgelassen habe (eine Funktion ich programiert habe) - allerdings kommt diese Meldung auch wenn eigentlich das Wort schon längst hätte erscheinen sollen...

Es wäre toll wenn jemand eine Antwort oder nur einen Denkanstoß parat hätte...

function completeTimer() {
   currentTime                         = new Date() ;
   editedCurrentTime                        = currentTime.getTime() ;
   expiredTimerTime                        = editedCurrentTime - startTimerTime ;
   timer() ;
  }

function timer() {
   if  ( ( timerIsRunning == 1 ) && ( expiredTimerTime < timeOfKeyPressed ) ) {
     window.setTimeout ("completeTimer()", delayTime) ;
   }
   else if ( ( timerIsRunning == 1 ) && ( expiredTimerTime >= timeOfKeyPressed ) ) {
     visibleItem                     = itemSequenceArray[trail] ;
     document.getElementById("visibleItemPosition").innerHTML        = visibleItem ;
     timerIsRunning                    = 0 ;
     expiredTimerTime                    = 0 ;
     decisionTimeRunning                   = 1 ;
     currentTime                     = new Date() ;
     startDecisionTime                    = currentTime.getTime() ;
     decisionTimeFrame() ;
   }
   else {
   }
  }

  1. Hallo

      
      
    function completeTimer()  
    {  
       currentTime = new Date() ;  
       editedCurrentTime = currentTime.getTime() ;  
       expiredTimerTime = editedCurrentTime - startTimerTime ;  
       timer() ;  
    }  
      
      
    function timer()  
    {  
       if  ( ( timerIsRunning == 1 ) && ( expiredTimerTime < timeOfKeyPressed ) )  
       {  
          window.setTimeout ("completeTimer()", delayTime) ;  
       }  
       else if ( ( timerIsRunning == 1 ) && ( expiredTimerTime >= timeOfKeyPressed ) )  
       {  
          visibleItem = itemSequenceArray[trail] ;  
          document.getElementById("visibleItemPosition").innerHTML = visibleItem ;  
          timerIsRunning = 0;  
          expiredTimerTime = 0;  
          decisionTimeRunning = 1;  
          currentTime = new Date();  
          startDecisionTime = currentTime.getTime();  
          decisionTimeFrame();  
       }  
       else  
       {  
       }  
    }  
    
    

    Poste mal das ganze Programm, hier sind einige Variablen nicht initialisiert. Mit welchem Browser hast Du das Programm getestet? IE ?
    tschüs

    --
    cogito ergo akro
      1. Hallo

        es heißt <script type="text/javascript"></script>
        aber ansonsten funktioniert das Script doch fehlerfrei ..
        tschüs

        --
        cogito ergo akro
        1. Hallo vonHandCoder.

          es heißt <script type="text/javascript"></script>

          Eigentlich sollte es heißen:

          <script type="application/javascript"></script>

          Die Übergangslösung funktioniert dagegen in mehr Browsern:

          <script type="application/x-javascript"></script>

          Ersteres nehmen nur die Geckos mit aktueller Engine (1.8) und Opera an, Konqueror dagegen verschmäht es.
          Dass der IE keine der beiden application/*-Varianten versteht, versteht sich von selbst.

          Einen schönen Sonntag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          mathbr:del.icio.us/ mathbr:w00t/