为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

郎朗坤 2021-06-02 09:04:13
我想在控制台中循环向下滚动浏览器窗口。我希望它每次向下滚动 (x)px 时我都会停止,做一些事情,然后再次滚动 (x)px 然后停止等等,直到页面结束(它很长,我想解析信息从中)。但是当我开始时,我偶然发现了一个问题,即循环结束后滚动功能只执行一次。let i = 0;scrollDownTillEnd = () => {  for(i; i<100; i++) {    window.scrollBy(0, 1000);  };scrollDownTillEnd();(这是一个简化的例子,但思路应该很清楚)我将代码放在控制台中,在我想要滚动的页面上,然后在循环结束时获取 i 的值,并且只向下滚动一次。请解释一下,为什么这段代码表现得像这样以及如何使它工作,正如我之前提到的(在每个循环中它都会滚动一点)。谢谢!
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

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


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


查看完整回答
反对 回复 2021-06-03
?
MMTTMM

TA贡献1869条经验 获得超4个赞

您可以使用 setInterval() 因为 for 循环只会执行一次


    function scrollDownTillEnd(countryDropdownList)

    {

      let scrollingInterval = setInterval(function(){

      window.scrollBy(0,1000)

      // write your condition

      if (window.scrollHeight > 10000)

      {

      clearInterval(scrollingInterval)

      }

    },100)

    }

scrollDownTillEnd();


查看完整回答
反对 回复 2021-06-03
  • 2 回答
  • 0 关注
  • 253 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信