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

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


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


let i = 0;

scrollDownTillEnd = () => {

  for(i; i<100; i++) {

    window.scrollBy(0, 1000);

  };

scrollDownTillEnd();

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


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


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


谢谢!


郎朗坤
浏览 254回答 2
2回答

长风秋雁

让我帮助解决这里发生的一些问题。1)您正在进行无限循环,因为i即使您每次都在增加它,您也没有检查它是否小于 100。您需要检查一下,i < 100以便循环最终结束。在您的循环中,0 将始终小于 100,因此循环永远不会结束。2)您的示例中存在语法错误,因为scrollDownTillEnd在调用函数本身之前,您实际上并没有用花括号关闭函数。3)最后,作为一种良好的做法,您需要i每次将变量重置为 0,以便我们可以一遍又一遍地运行这段代码。您在示例中设置它的方式,因为i在第一次运行结束时将等于 100,在此之后循环将永远不会再次运行,直到您i再次重置为 0。执行此操作的最简单方法是i每次执行此循环时将值初始化为 0。尝试这样的事情:scrollDownTillEnd = () => {&nbsp; &nbsp; for(let i = 0; i < 100; i++) {&nbsp; &nbsp; &nbsp; &nbsp; window.scrollBy(0, 1000);&nbsp; &nbsp; };};scrollDownTillEnd();

MMTTMM

您可以使用 setInterval() 因为 for 循环只会执行一次&nbsp; &nbsp; function scrollDownTillEnd(countryDropdownList)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; let scrollingInterval = setInterval(function(){&nbsp; &nbsp; &nbsp; window.scrollBy(0,1000)&nbsp; &nbsp; &nbsp; // write your condition&nbsp; &nbsp; &nbsp; if (window.scrollHeight > 10000)&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; clearInterval(scrollingInterval)&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; },100)&nbsp; &nbsp; }scrollDownTillEnd();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript