最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to stop a function after ten seconds? - Stack Overflow

programmeradmin1浏览0评论

I found this piece of code while trying to find out a way to load a reddit page so that I can use ctrl + f to find a specific post. The problem is that it just keeps scrolling down and loading the pages. I need to find a way to stop it after 10 seconds so that I can take a look at what I loaded. Also I don't know any javascript so I couldn't really find anythig that would help me.

Here is the code

var lastScrollHeight = 0;
function autoScroll() {
  var sh = document.documentElement.scrollHeight;
  if (sh != lastScrollHeight) {
    lastScrollHeight = sh;
    document.documentElement.scrollTop = sh;
  }
}
window.setInterval(autoScroll, 100);

I just paste that into the firefox console.

I found this piece of code while trying to find out a way to load a reddit page so that I can use ctrl + f to find a specific post. The problem is that it just keeps scrolling down and loading the pages. I need to find a way to stop it after 10 seconds so that I can take a look at what I loaded. Also I don't know any javascript so I couldn't really find anythig that would help me.

Here is the code

var lastScrollHeight = 0;
function autoScroll() {
  var sh = document.documentElement.scrollHeight;
  if (sh != lastScrollHeight) {
    lastScrollHeight = sh;
    document.documentElement.scrollTop = sh;
  }
}
window.setInterval(autoScroll, 100);

I just paste that into the firefox console.

Share Improve this question edited Dec 15, 2018 at 23:20 Lemmy 2,5751 gold badge26 silver badges32 bronze badges asked Dec 15, 2018 at 19:07 leoleo 331 silver badge3 bronze badges 2
  • use setTimeout instead of setInterval – Code Maniac Commented Dec 15, 2018 at 19:13
  • Wele! Really well-formed first question! +1 / Tip: You can include runnable JavaScript/CSS/HTML code using the code snippet button instead of the simple code block format. – Pinke Helga Commented Dec 15, 2018 at 19:29
Add a ment  | 

5 Answers 5

Reset to default 3

To stop the interval after a certain amount of time use a setTimeout() that calls clearInterval(). Here's a simplified version (with the time reduced to 1 second for demo purposes) that should help:

function autoScroll(){
  console.log("running")
}

// save a reference to the interval handle
let interval = window.setInterval(autoScroll, 100);

// cancel interval after 1 second (1000 ms)
setTimeout(() => clearInterval(interval), 1000)

The setInterval() function returns an ID, which you can use to stop it. Just put it in setTimeout() method like this:

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

You will simply need to call clearInterval on your looped function to stop it after using a setTimeout set to 10 seconds, here is how you can implement it :

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);
....
var intervalID = window.setInterval(autoScroll, 100);

setTimeout(function(){
    clearInterval(intervalID);
}, 10000);

You can use setTimeout to call the function until 10s are up.

Here's an immediately-invoked function that calls itself every 100th sec until 10s has been reached.

(function autoScroll(t) {
  t = t || 0;
  if (t < 10000) {
    console.log(t);
    setTimeout(autoScroll, 100, t += 100);
  }
})();

发布评论

评论列表(0)

  1. 暂无评论