Javascript ScrollTo在页面加载时不起作用
Javascript ScrollTo does not work on page load
我有一个问题,我想通过调用window.sollTo()来渲染页面后,将页面滚动到特定元素。但不起作用。有什么限制吗?
var step = Math.round(distance / 25); // distance is Stop-start
var leapY = stopY > startY ? startY + step : startY - step;
var timer = 0;
if (stopY > startY) {
for (var i = startY; i < stopY; i += step) {
setTimeout(window.scrollTo(0,leapY), timer * speed);
leapY += step;
if (leapY > stopY)
leapY = stopY;
timer++;
}
}
此行:
setTimeout(window.scrollTo(0,leapY), timer * speed);
立即调用window.scrollTo
并将其返回值传递到setTimeout
,就像foo(bar())
立即调用bar
并传递其返回值到foo
一样。
您需要传入一个函数:
setTimeout(function() { window.scrollTo(0,leapY); }, timer * speed);
但仅凭这一点还不够,因为函数在运行时会按的原样查看leapY
值,而不是在定义时查看,因此它们最终都会使用leapY
的最后一个值。所以你想要一个构建器函数:
setTimeout(buildScroller(leapY), timer * speed);
function buildScroller(y) {
return function() { window.scrollTo(0,y); };
}
在循环中,我们调用传入leapY
的构建器作为y
参数,它返回一个在参数(而不是leapY
)上闭合的函数。这个参数不会改变,所以它构建的函数使用了正确的值。
实时示例|实时源
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Scrolling On Load In Loop</title>
<style>
div {
height: 200px;
}
</style>
</head>
<body>
<div>Scrolls to each of the first four followingdivs at intervals of one second</div>
<div>0x100</div>
<div>0x200</div>
<div>0x300</div>
<div>0x400</div>
<div>0x500</div>
<div>0x600</div>
<div>0x700</div>
<div>0x800</div>
<div>0x900</div>
<div>0x1000</div>
<div>0x1100</div>
<div>0x1200</div>
<div>0x1300</div>
<div>0x1400</div>
<script>
(function() {
var leapY;
for (leapY = 1; leapY <= 4; ++leapY) {
setTimeout(buildScroller(leapY * 200), leapY * 1000);
}
function buildScroller(y) {
return function() { window.scrollTo(0,y); };
}
})();
</script>
</body>
</html>
相关文章:
- 弹出加载不起作用
- GULP中的Ctrl+S之后,实时重新加载不起作用
- 影子盒加载不起作用
- 余烬 CLI 实时重新加载不起作用
- 在Javascript中保存和加载不起作用
- 路由到新页面时加载不起作用
- IE11 脚本加载不起作用(有时)
- 砌体图像加载不起作用
- Jquery 移动加载不起作用
- 在javascript/jquery中加载不起作用
- jquery瀑布插件's等待图像加载不起作用
- 简单的Jquery/Ajax加载不起作用
- 代码点火器&AJAX-Div重新加载不起作用
- HTML加载不起作用
- 有什么原因吗('img')加载不起作用(jQuery)
- 弹出加载不起作用
- 图像加载不起作用,错误Uncaught TypeError:类型错误
- 窗口加载不起作用
- 加载不起作用,但鼠标悬停正常工作
- 在wordpress中,ajax加载不起作用