Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滚动页面直到某个高度_Javascript_Html_Scroll - Fatal编程技术网

Javascript 滚动页面直到某个高度

Javascript 滚动页面直到某个高度,javascript,html,scroll,Javascript,Html,Scroll,如何使用javascript滚动页面,直到滚动高度达到预定义的像素数 function pageScroll() { // Next line is pseudocode: if (window.ScrolledHeight != SOME_NUM) window.scrollBy(0,50); } scrolldelay = setTimeout('pageScroll()',100); 应该有一些逻辑检查的东西。您能帮助我,如何获得滚动高度吗?您能在函数之外使

如何使用javascript滚动页面,直到滚动高度达到预定义的像素数

function pageScroll() {
    // Next line is pseudocode:
    if (window.ScrolledHeight != SOME_NUM)
       window.scrollBy(0,50);
}
scrolldelay = setTimeout('pageScroll()',100);

应该有一些逻辑检查的东西。您能帮助我,如何获得滚动高度吗?

您能在函数之外使用一个变量,每次运行pageScroll时将值增加50像素,然后检查该值是否等于或大于您要查找的值吗

e、 g

var scrollmount=0;
函数pageScroll(){
滚动窗口(0,50);
总金额+=50;
如果(滚动量<200){
scrolldelay=setTimeout('pageScroll()',100);
}
}

如果您不想使用全局变量,也可以让函数接受您修改的参数。

首先,您不应该使用
setTimeout
您应该使用
setInterval
。基本上是因为它更好地实现了你的目标,而且就实际时间而言,它更准确。如果你想知道更多关于这个话题的信息,可以用谷歌搜索。但是您需要的是
clearInterval
方法。另外,在
setTimeout
setInterval
中使用匿名函数更快

startPageScroll(){
  var scrollAmt = 0;
  var id=setInterval(function(){
    if(scrollAmt</*Whatever your limit is*/){
      window.scrollBy(0,50);
      scollAmt+=50;
    }
    else{clearInterval(id);}
  },100);
}

这是一个可能会有所帮助的链接。

您已经有了有效的答案,但我会添加一点味道,它会滚动,但在到达目标滚动点之前会变慢:

function pageScroll() {
    var delta = min(SOME_NUM-window.ScrolledHeight)>>1,50);
    if (delta > 0) {
       window.scrollBy(0,delta);
       setTimeout('pageScroll()',100);
    }
}

一个很好的副作用是,无论滚动量是否为50的倍数,滚动量都应该正好达到某个数值。

好主意。我会等一会儿,也许有属性指示正确的高度,否则我会将您的帖子标记为答案。setTimeout仅用于示例。代码将在循环中运行。
var scroll;

if(window.pageYOffset){
  scroll=window.pageYOffset;
}
else{
  scroll=document.body.scrollTop;
}
function pageScroll() {
    var delta = min(SOME_NUM-window.ScrolledHeight)>>1,50);
    if (delta > 0) {
       window.scrollBy(0,delta);
       setTimeout('pageScroll()',100);
    }
}