自动滚动:停止跳回页首
我有一个页面,用户在其中单击一个链接开始自动向下滚动页面以便于阅读。用户点击另一个链接来停止滚动。前者完美地工作,但后者使页面跳回顶部点击,而不是停止滚动页面上的那个地方。有任何想法吗?自动滚动:停止跳回页首
function pageScroll() {
window.scrollBy(0,1); // horizontal and vertical scroll increments
scrolldelay = setTimeout('pageScroll()',50); // scrolls every 100 milliseconds
}
function stopScroll() {
clearTimeout(scrolldelay);
}
我尝试添加return false;
从东西我在另一篇文章读第二个功能,但它并没有帮助。无论如何,我不完全理解返回的使用。谢谢你的帮助。
我假设你正在做这样的事情:
<a href="#" onclick="pageScroll();">start</a>
<a href="#" onclick="stopScroll();">stop</a>
最快的解决方法是从onclick
事件处理程序返回false,像这样:
<a href="#" onclick="pageScroll(); return false;">start</a>
<a href="#" onclick="stopScroll(); return false;">stop</a>
的想法是停止浏览器不执行事件的默认操作(在这种情况下,将滚动到页面顶部的#
)。现在,更现代的方法是绑定事件处理函数,然后使用e.preventDefault()
,但return false;
仍适用于旧式事件属性。
欣赏答案。完美工作。我理解你说的不允许链接转到默认动作,但是'return false'如何防止呢? – preahkumpii 2012-04-13 11:47:16
没有真正的“原因”,但历史上,DOM允许事件处理程序取消默认操作(在引入'.preventDefault()之前)的一种方式是从处理函数返回false(在这种情况下,处理函数是'onclick'字符串。 – 2012-04-13 11:48:53
哎呀,谢谢。 – preahkumpii 2012-04-13 11:51:20
您的'scrolldelay'变量不能在另一个函数中访问。 – hjpotter92 2012-04-13 11:16:16
为什么@ChasingDeath对我来说似乎是全球性的。 – epascarello 2012-04-13 11:17:48
嘿@preahkumpii,显示你如何调用这些函数。控制台中是否有任何错误? – epascarello 2012-04-13 11:17:54