2017-06-14 98 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;