2017-06-14 12 views
0

ich einige Zeilen weiter unten geschrieben:window.onscroll Funktion viele Male ausführen

function testScroll() { 
    if (window.pageYOffset > 400) { 
     for (var x=0; x<=2; x++){ 
      newCircle(circle[x],circleId[x],startColorId[x],endColorId[x]); 
     }; 
    }; 
}; 

window.onscroll = testScroll; 

Funktion arbeitet newCircles zeigt aber es tut so oft wie Benutzer nach unten scrollen der Seite, die ideal, wenn die Stopp-Funktion, wenn es appering drei Kreise auf Seite

ich gleich, wenn die Bedingung zu ändern versucht, aber es Hilfe tut, wenn Sie irgendwelche Ideen haben, bitte helfen

+1

'onscroll' mehrmals pro Sekunde abfeuert, benötigen Sie einen [Debouncer] (https://stackoverflow.com/a/4298672/1169519). Oder wenn Sie die Frage erneut lesen, setzen Sie 'window.onscroll' am Ende der Handler-Funktion auf" null "... – Teemu

+0

nulling window.onscroll hat perfekt funktioniert thx, ist es eine schlechte Übung? – artjuzwik

+0

Nicht schlechter als die Einstellung einer Funktion =). Es entfernt nur den Ereignis-Listener. – Teemu

Antwort

0

Ihre aktuelle Funktion erstellt 3 Kreise jedes Mal, wenn Sie blättern.

Wenn Sie MAX 3 Kreise haben möchten; Führen Sie die folgende Änderung:

var _countCirlces =0; // initial circles count 
function testScroll(ev){ 

    if(window.pageYOffset>400) { 
     // create 1 circle for each scroll + increment _countCircles 
     newCircle(circle[x],circleId[x],startColorId[x],endColorId[x]); 
     _countCircles++; 

    };return; 

}; 

window.onscroll=testScroll; 
0
var _circleCount = 0; 

function testScroll(ev) { 

    if(window.pageYOffset>400 && _circleCount < 2) { 
     for (var x=0; x<=2; x++) { 
      newCircle(circle[x], circleId[x], startColorId[x], endColorId[x]); 
      _circleCount++; 
     }; 
    }; 
    return; 
}; 

window.onscroll = testScroll; 
Verwandte Themen