2017-06-14 83 views
0

我寫了下面幾行:window.onscroll執行功能很多次

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; 

功能的工作原理顯示newCircles但它確實多次用戶向下滾動頁面,理想會在功能停止,如果有appering頁面上三圈,

我想如果條件改變爲平等的,但它不幫助,如果您有任何想法,請幫助

+1

'onscroll'觸發每秒幾次,則需要一個[反跳(https://stackoverflow.com/a/4298672/1169519)。或者在重新閱讀問題時,在處理函數的末尾將'window.onscroll'設置爲'null' ... – Teemu

+0

nulling window.onscroll完美地工作thx,這是不好的做法嗎? – artjuzwik

+0

不要設置爲引用函數=)。它只是刪除事件監聽器。 – Teemu

回答

0

您當前的函數創建每次滾動時間3圈。

如果你想有MAX 3圈;執行以下變化:

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;