如何在一定时间后终止Javascript函数

如何在一定时间后终止Javascript函数,javascript,html,Javascript,Html,我有一个页面,当用户开始滚动滚动条时,它会自动滚动。但是我想在一段时间后停止滚动。下面是我到目前为止所做的,但它不起作用。我不认为“return;”是我应该使用的正确函数,但我找不到任何有效的函数 函数滚动函数(){ 滚动窗口(0,10); } window.onscroll=滚动函数; setTimeout(函数滚动函数(){ 返回; }, 2000); 您创建的两个函数互不相关。他们有相同的名字这一事实无关紧要 setTimeout用于安排将来的一些工作。但是传递给setTimeout的

我有一个页面,当用户开始滚动滚动条时,它会自动滚动。但是我想在一段时间后停止滚动。下面是我到目前为止所做的,但它不起作用。我不认为“return;”是我应该使用的正确函数,但我找不到任何有效的函数

函数滚动函数(){
滚动窗口(0,10);
}
window.onscroll=滚动函数;
setTimeout(函数滚动函数(){
返回;
}, 2000);


您创建的两个函数互不相关。他们有相同的名字这一事实无关紧要

setTimeout
用于安排将来的一些工作。但是传递给
setTimeout
的函数根本不起任何作用,因此没有必要

相反,您必须跟踪第一次调用函数的时间,并检查每次调用函数时经过的时间。如果已经过了足够的时间,不要再次调用
window.scrollBy(0,10)
,以防止重新触发事件

var开始时间;
函数滚动函数(){
如果(!开始时间){
//第一次打电话
startTime=Date.now();
}else if(Date.now()-startTime>2000){
//停止条件。2秒钟过去了吗?
startTime=null;
返回;
}
滚动窗口(0,10);
}
window.onscroll=滚动函数

如果您想在X个时间段后终止JavaScript函数,则可能需要一个超时:

尝试使用setTimeout函数:

setTimeout(function(){ alert("Hello"); }, 3000);
通过此链接:

因此,对于您的特定用例:

var startTime;
var stopTime;
function scrollFunction() {

    startTime = Date.now();


function testFunction() {
    alert("Test");
 }

 if (x > y) {
      stopTime = Date.now() - startTime
      setTimeout(function(){ testFunction(); }, stopTime );
  }

希望对您有所帮助。

为了使自动滚动停止,计时器将关闭,因为默认情况下它是打开的,即计时器的值为1。通过将该变量设置为零,将导致window.scrollBy()不执行,但scrollFunction()仍然非常有效。因此,当没有计时器时,代码会将window.onscroll设置为一个匿名函数,该函数只执行返回操作,从而使Scroll函数失效

var定时器=1;
var=5000;
var start=Date.now();
函数滚动函数(){
var now=Date.now();
中频(定时器){
滚动窗口(0,10);
如果(现在-开始>经过){
定时器=0;
返回;
}
}
其他的
{
window.onscroll=函数(){
返回;
};
}
}
window.onscroll=滚动函数


您创建的两个函数互不相关。超时完全没有必要。传递给
setTimeout
的函数没有任何作用。我不是说它不工作。当我点击时,它会停止滚动,尽管我不知道这是否是OP想要的。但是,它只能在
定时器
标志下工作
t
和调用
setTimeout
完全没有必要。看,当我删除它时,它的工作原理是一样的:。@FelixKling你是对的,我删除了超时代码——谢谢你的反馈。超时是如何“杀死”函数的?