Javascript window.onscroll多次执行函数

Javascript window.onscroll多次执行函数,javascript,svg,Javascript,Svg,我写了以下几行: 函数testScroll(){ 如果(window.pageYOffset>400){ 对于(var x=0;x,当前函数在每次滚动时创建3个圆圈 如果希望最多有3个圆,请执行以下更改: var _countCirlces =0; // initial circles count function testScroll(ev){ if(window.pageYOffset>400) { // create 1 circle for each sc

我写了以下几行:

函数testScroll(){
如果(window.pageYOffset>400){

对于(var x=0;x,当前函数在每次滚动时创建3个圆圈

如果希望最多有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;
var\u circleCount=0;
功能测试滚动(ev){
如果(窗口页面偏移>400&&u循环计数<2){

对于(var x=0;x
onscroll
每秒触发几次,您需要一个。或者在重新阅读问题时,在处理程序函数的末尾将
window.onscroll
设置为
null
…清空window.onscroll工作得很好thx,这是一种糟糕的做法吗?不比将其设置为引用函数=)。它只是删除事件侦听器。如果您不再需要响应事件(在本例中为滚动事件),则删除侦听器(如上面建议的@Teemu)是最佳解决方案。它使用的资源更少,并且通常使代码更易于理解。
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;