javascript - 为什么我不能在控制台中循环滚动浏览器窗口?

标签 javascript loops dom scroll console

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

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

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

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

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

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

谢谢!

最佳答案

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

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

关于javascript - 为什么我不能在控制台中循环滚动浏览器窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56173022/

相关文章:

javascript - 多边形选择 OpenLayers 3

Python 用循环多重处理一个大列表

java 使用 readline 嵌套 while 循环

java - 在特定采样/时间循环音频

java - 在android中创建xml文档

javascript - 在工具提示中将秒转换为时间

javascript - 如何禁用 "dijit.form.FilteringSelect"小部件?

javascript - FullCalendar 在网站标题上滚动

java - 如何使用 Java 解析 XML 中的 CDATA

php - 删除 DomXPath 中的最后一个子节点