Javascript 禁用间隔功能导致视觉故障

Javascript 禁用间隔功能导致视觉故障,javascript,jquery,function,generator,statements,Javascript,Jquery,Function,Generator,Statements,我创建了一小段代码,每80毫秒在一个随机的“固定”位置创建一个DIV。这个div显示大约2秒钟,然后删除它自己(包括生成的代码)。但是,当离开发生这种情况的页面部分时(使用滚动);我要发电机停下来 为了避免每次用户使用滚动时都执行代码(重复生成器,因为滚动),我认为使用真/假语句最有用 if (focuson = true){window.setInterval(function(){$(generator);}, 80);} $(window).scroll(function(){ if

我创建了一小段代码,每80毫秒在一个随机的“固定”位置创建一个DIV。这个div显示大约2秒钟,然后删除它自己(包括生成的代码)。但是,当离开发生这种情况的页面部分时(使用滚动);我要发电机停下来

为了避免每次用户使用滚动时都执行代码(重复生成器,因为滚动),我认为使用真/假语句最有用

if (focuson = true){window.setInterval(function(){$(generator);}, 80);}

$(window).scroll(function(){
if  ($(window).scrollTop() > resolutieh){
    var focuson = false;
    window.clearInterval(generator); generator = 0;
    }
else{
    var focuson = true;
}
});
上面的代码实际上可以工作,但会导致视觉故障;当最后生成的DIV被删除时:此时屏幕上没有“填充”DIV内容的每个部分都将填充大的白色块(基本上是重复x/y时的“背景图像”)。同时,滚动回发电机激活的位置不会再次激活发电机

以下代码对我来说似乎更符合逻辑(尽管它不起作用):

我基本上是想通过“正确”停止发电机或将其计时器设置得很低以减少计算时间来避免视觉故障。一个很酷的好处是,如果您回到页面中生成器生成的部分,它会再次打开

有什么建议吗


亲切问候。

如果(focuson=true)这里有问题
。这句话永远是真的,如果(focuson=false),这句话也将是真的。另外,您两次声明了
聚焦于
,JS没有块作用域。@elclanrs试图指出的是,您需要使用
==
进行比较,而不是
=
。我不明白您的间隔函数的作用<代码>$(生成器)不会对DOM进行任何更改。滚动处理程序似乎希望
generator
包含由
setInterval
返回的值,但我看不出您在哪里这样做。@@elclans基本上您是在告诉我不能/不应该使用true/false。我应该如何解决这个问题?如果我在window.scroll的If/else中使用函数,则每次用户使用scroll(=生成器过载)时,我都会遇到执行代码的问题@巴尔马感谢您的具体解决方案。我尝试了“==”,但是不起作用。$(生成器)使用math.random作为x/y坐标,并将DIV附加到父级,并在2s后将其删除。仅使用:window.setInterval(函数(){$(生成器);},80);-如果没有上面的true/false,它就可以工作。问题是
if(focuson…
代码不是任何事件处理程序的一部分。它将在页面首次加载时执行一次,而不是在更新
focuson
的值时执行。
if (focuson = true){window.setInterval(function(){$(generator);}, 80);}
if (focuson = false){window.clearInterval(function(){$(generator);}, 0);}

$(window).scroll(function(){
if  ($(window).scrollTop() > resolutieh){
    var focuson = false;;
    }
else{
    var focuson = true;
}
});