Javascript 如何在十秒钟后停止功能?

Javascript 如何在十秒钟后停止功能?,javascript,timeout,settimeout,Javascript,Timeout,Settimeout,我在试图找到加载reddit页面的方法时发现了这段代码,以便使用ctrl+f查找特定的帖子。问题是它只是不断向下滚动并加载页面。我需要找到一种方法在10秒后停止它,这样我可以看看我加载了什么。此外,我不知道任何javascript,所以我找不到任何对我有帮助的东西 这是密码 var lastScrollHeight = 0; function autoScroll() { var sh = document.documentElement.scrollHeight; if (sh !=

我在试图找到加载reddit页面的方法时发现了这段代码,以便使用ctrl+f查找特定的帖子。问题是它只是不断向下滚动并加载页面。我需要找到一种方法在10秒后停止它,这样我可以看看我加载了什么。此外,我不知道任何javascript,所以我找不到任何对我有帮助的东西

这是密码

var lastScrollHeight = 0;
function autoScroll() {
  var sh = document.documentElement.scrollHeight;
  if (sh != lastScrollHeight) {
    lastScrollHeight = sh;
    document.documentElement.scrollTop = sh;
  }
}
window.setInterval(autoScroll, 100);
我只是将其粘贴到firefox控制台。

函数返回一个ID,您可以使用它来停止它。 只需将其放入
setTimeout()
方法中,如下所示:

var myInterval = setInterval(autoscroll, 100);
setTimeout(function(){ clearInterval(myInterval); }, 10000);

要在一定时间后停止间隔,请使用调用
clearInterval()
setTimeout()
。下面是一个简化版本(为了演示目的,时间缩短到1秒),它应该会有帮助:

函数autoScroll(){ console.log(“正在运行”) } //保存对间隔句柄的引用 let interval=window.setInterval(autoScroll,100); //1秒后取消间隔(1000毫秒)
setTimeout(()=>clearInterval(interval),1000)在使用
setTimeout
设置为10秒后,您只需调用循环函数即可停止它,以下是如何实现它:

var lastScrollHeight = 0;
function autoScroll() {
    var sh = document.documentElement.scrollHeight;
    if (sh != lastScrollHeight) {
        lastScrollHeight = sh;
        document.documentElement.scrollTop = sh;
    }
}
const interval = window.setInterval(autoScroll, 100);
window.setTimeout(() => {clearInterval(interval)}, 10000);

您可以使用
setTimeout
调用该函数,直到10秒结束

这里有一个立即调用的函数,它每100秒调用一次自己,直到达到10秒

(自动滚动功能(t){
t=t | | 0;
如果(t<10000){
控制台日志(t);
设置超时(自动滚动,100,t+=100);
}

})();使用setTimeout而不是setIntervalWelcome!第一个问题的形式真的很好+1/提示:您可以使用代码片段按钮而不是简单的代码块格式包含可运行的JavaScript/CSS/HTML代码。不是10秒,而是1(至少应该提到),但是,这是我最喜欢的答案,因为它使用本地范围关键字
let
,并且被格式化为可运行的代码片段。这是@Quasimodo'sclone的一个公平点,我添加了一个关于一秒钟的评论-只是不想等待10秒才能看到结果。谢谢,代码工作起来就像我想的那样,但只是发现向下滚动实际上并没有加载帖子,所以我不能真正使用ctrl+f来查找我想要的内容。lol@leo您是否正在使用GreaseMonkey/TemperMonkey编写用户脚本?如果可能的话,最好是在每次加载新内容时直接调用页面的AJAX功能。你在调整哪个站点?很好的自调用函数表达式的方法。应以100毫秒的间隔运行。改进:倒计时到0,并以所需的持续时间调用。
var lastScrollHeight = 0;
function autoScroll() {
    var sh = document.documentElement.scrollHeight;
    if (sh != lastScrollHeight) {
        lastScrollHeight = sh;
        document.documentElement.scrollTop = sh;
    }
}
const interval = window.setInterval(autoScroll, 100);
window.setTimeout(() => {clearInterval(interval)}, 10000);