我想在控制台中循环浏览器窗口。我想要它,以便每次向下滚动(x)px时我停下来,做点什么,然后再次滚动(x)px,然后停下来,等等。直到页面结尾(它很长,我想解析信息)从中)。
但是当我开始时,我偶然发现了一个问题,即循环结束后,滚动功能仅执行一次。
let i = 0;
scrollDownTillEnd = () => {
for(i; i<100; i++) {
window.scrollBy(0, 1000);
};
scrollDownTillEnd();
(这是一个简化的示例,但思路应该很清楚)
我将代码放在控制台中,位于要滚动的页面上,然后在循环末尾获得i的值,并且仅向下滚动一次。
请给我解释一下,为什么这段代码的行为如此以及如何使其工作(如我之前提到的那样(在每个循环中它都会滚动一点)。
谢谢!
答案 0 :(得分:0)
让我帮助解决此处发生的一些问题。
1)您正在进行无限循环,因为您没有检查i
小于100,即使您每次都递增它。您需要检查i < 100
,以便循环最终结束。在您的循环中,0将始终小于100,因此循环将永远不会结束。
2)您的示例中有一个语法错误,因为在调用函数本身之前,实际上并没有使用花括号将scrollDownTillEnd
函数关闭。
3)最后,作为一种好的实践,您需要每次将i
变量重置为0,以便我们可以一次又一次地运行这段代码。在示例中的设置方式,由于i
在第一次运行结束时等于100,因此直到您将i
重置为0以后,循环才会再次运行再次。最简单的方法是每次执行此循环时都将i
初始化为0。
尝试这样的事情:
scrollDownTillEnd = () => {
for(let i = 0; i < 100; i++) {
window.scrollBy(0, 1000);
};
};
scrollDownTillEnd();
答案 1 :(得分:0)
你可以使用 setInterval() 因为 for 循环只会执行一次
function scrollDownTillEnd(countryDropdownList)
{
let scrollingInterval = setInterval(function(){
window.scrollBy(0,1000)
// write your condition
if (window.scrollHeight > 10000)
{
clearInterval(scrollingInterval)
}
},100)
}
scrollDownTillEnd();