javascript - 为什么我不能在控制台中循环滚动浏览器窗口?
问题描述
我想在控制台中循环向下滚动浏览器窗口。我想要它,这样每次向下滚动 (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();
推荐阅读
- dns - 什么是 DNS 中的“附加部分”以及它是如何工作的?
- java - 第 8 天:字典和地图 JAVA
- javascript - 调用函数名和添加的变量
- android - 从 Firebase 检索图像不起作用?
- protractor - 如何在量角器中查找表单提交输入
- java - 不鼓励多行 toString() 输出吗?
- .htaccess - 订单似乎与 https://www 重定向无关?
- android - CircleCI - 无法启动浓缩咖啡测试,得到“'java.lang.NoClassDefFoundError'
- java - 异常类已声明但未抛出
- laravel-5 - 安装 laravel-setup-wizard 失败