首页 > 解决方案 > 为什么我不能在控制台中循环滚动浏览器窗口?

问题描述

我想在控制台中循环向下滚动浏览器窗口。我想要它,这样每次向下滚动 (x)px 时我都会停下来,做一些事情,然后再次滚动 (x)px 然后停止等等,直到页面结束(它很长,我想解析信息从中)。

但是当我开始时,我偶然发现了一个问题,即在循环结束后,滚动功能只执行一次。

let i = 0;
scrollDownTillEnd = () => {
  for(i; i<100; i++) {
    window.scrollBy(0, 1000);
  };
scrollDownTillEnd();

(这是一个简化的例子,但思路应该很清楚)

我将代码放在控制台中,位于我想要滚动的页面上,然后在循环结束时获取 i 的值,并且只向下滚动一次。

请解释一下,为什么这段代码会有这样的行为以及如何使它工作,正如我之前提到的(在每个循环中它都会滚动一点)。

谢谢!

标签: javascriptloopsdomscrollconsole

解决方案


让我帮助解决这里发生的一些问题。

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();

推荐阅读