JürgenB: Funktion nach gedrückt gehaltener Maustaste

Beitrag lesen

Hallo Matze,

ob es bei dir zu Kollisionen mit den globalen Variablen kommt, kann ich nicht sagen, ich kenne dein Gesamtprogramm nicht. Bei dem, was du bisher gezeigt hast, wird es wohl klappen.

Ich habe hier mal ein Beispiel, wie man bei Eventhandlern und bei verzögert aufgerufenen Funktionen auf globale Variablen verzichten kann. Ich hänge da die Variablen an das Element mit den Event und benutze ein "Closure":

function stopper(element){  
  window.clearTimeout(element.timeout);  
}  
function timer(element) {  
  element.timeout = setTimeout(  
    function() {        // Anonyme Funktion als "Closure"  
      var e = element;  // Eventauslösendes Element wird zwischengespeichert  
      test(e);}         // Der Trick ist hier, dass "element" beim Anlegen  
                        // der Funktion noch bekannt ist, beim verzögerten  
                        // Aufruf aber nicht mehr, "e" ist aber auch dann  
                        // noch bekannt.  
  ,1200);  
}  
function test(element) {  
  alert(element.innerHTML);  
}
<div onmouseover="timer(this)" onmouseout="stopper(this)">Text1</div>  
<div onmouseover="timer(this)" onmouseout="stopper(this)">Text2</div>

einen guten Artikel hierzu hat Mathias geschrieben:
http://aktuell.de.selfhtml.org/artikel/javascript/organisation/

Gruß, Jürgen