2016-05-05 13 views
1

Ich versuche, ein Element auf der linken Seite bewegen, wenn die Maus auf der linken Seite des Bildschirms, wenn auf der anderen Seite. Ich möchte eine Funktion aktivieren, die das Element bewegt, wenn die Maus eine Zone betritt, und diese Funktion beim Beenden stoppen.setInterval kann nicht gestoppt werden

Ich habe versucht, setInterval und clearInterval zu verwenden, aber unmöglich, es zu arbeiten. Die setInterval funktioniert, und die Funktion startet, aber ich kann es nicht stoppen.

Hier ist der Code in einer init-Funktion erklärt:

var intervalLeft; 
    var intervalRight; 

    var currentMousePos = { x: -1, y: -1 }; 

    $(document).mousemove(function(event) { 
     currentMousePos.x = event.pageX; 
     if (currentMousePos.x < 200) { 
      console.log('LEFT'); 
      intervalLeft = setInterval(goleft, 500); 
     } else if (currentMousePos.x > $width-200) { 
      console.log('RIGHT'); 
      intervalRight = setInterval(goright, 500); 
     } else { 
      console.log('STOP'); 
      clearInterval(intervalRight); 
      clearInterval(intervalLeft); 
     } 
    }); 

Antwort

6

Sie ein neues interval auf jedem mousemove Ereignis zu schaffen, so dass Sie klar, nur die letzte gestartet. Sie sollten überprüfen, ob Sie bereits eine interval gestartet haben und nur eine neue starten, wenn Sie nicht gelöscht haben

+0

Oh ich dachte, dass die 'interval' Objekte nur sich selbst aktualisierten, sie wurden tatsächlich multipliziert. Es funktioniert jetzt gut, vielen Dank! – Skaddict

Verwandte Themen