Javascript 不带jQuery返回顶部按钮

Javascript 不带jQuery返回顶部按钮,javascript,jquery,Javascript,Jquery,我想用javascript创建一个“返回顶部”按钮。我的代码(我在StackOverflow上找到的)在我单击按钮时不起作用,什么也没有发生 HTML <button type="button" id="backtotop_js">To the top</button> 到顶部 JAVASCRIPT document.getElementById('backtotop_js').onclick = function () { scr

我想用javascript创建一个“返回顶部”按钮。我的代码(我在StackOverflow上找到的)在我单击按钮时不起作用,什么也没有发生

HTML

     <button type="button" id="backtotop_js">To the top</button>
到顶部
JAVASCRIPT

     document.getElementById('backtotop_js').onclick = function () {
        scrollTo(document.documentElement, 0, 1250);
     };
     function scrollTo(element, to, duration) {
         var start = element.scrollTop,
             change = to - start,
             currentTime = 0,
             increment = 20;

         var animateScroll = function(){        
             currentTime += increment;
             var val = Math.easeInOutQuad(currentTime, start, change, duration);
             element.scrollTop = val;
             if(currentTime < duration) {
                 setTimeout(animateScroll, increment);
             }
         };
         animateScroll();
     }

     Math.easeInOutQuad = function (t, b, c, d) {
        t /= d/2;
        if(t < 1) 
           return c/2*t*t + b;
        t--;
        return -c/2 * (t*(t-2) - 1) + b;
     };
document.getElementById('backtotop_js')。onclick=function(){
scrollTo(document.documentElement,01250);
};
函数滚动到(元素、到、持续时间){
var start=element.scrollTop,
改变=开始,
currentTime=0,
增量=20;
var animateScroll=函数(){
当前时间+=增量;
var val=Math.easeInOutQuad(当前时间、开始、更改、持续时间);
element.scrollTop=val;
如果(当前时间<持续时间){
设置超时(动画滚动,增量);
}
};
动画滚动();
}
Math.easeInOutQuad=函数(t,b,c,d){
t/=d/2;
if(t<1)
返回c/2*t*t+b;
t--;
返回-c/2*(t*(t-2)-1)+b;
};
(我正在使用Chrome和Firefox)


哪里错了

将使滚动到顶部,而不显示动画

document.getElementById('backtotop_js').onclick = function () {    
    document.documentElement.scrollTop = 0;
}
编辑: 根据鲁迪下面的评论,将document.getElementsByTagName('body')[0]更改为document.documentElement。

定义和用法(document.document.Element)

documentElement属性将文档的documentElement作为元素对象返回

对于HTML文档,返回的对象是HTML元素

注意:如果缺少HTML元素,则返回值为null


您不应该滚动html元素,而是滚动正文。。。正如vikton所举的例子。

scrollTo是一个复杂的过程,仅当您打算滚动特定元素时才使用它。但是如果您想滚动到顶部,只需转到位置0。
窗口
已经有了一个方法
滚动到
。你可能不应该这样调用你自己的函数。就我个人而言,我会使用一个老式的锚,没有JS或其他东西。到顶端去。如果必须使用JS,只需放置->window.scrollTo(0,0)@鲁迪:很抱歉,我不明白我要更正什么。有些浏览器将
document.documentElement
作为滚动容器,而不是
document.body
。他们都理解
window.scrollTo(x,y)
但是如果你想要动画,你可以使用setTimeout将document.documentElement.scrollTop值逐渐减小到0。-在这里工作。也许,你需要把你的JS放在结尾的body标签旁边。@vitkon它可以工作!我通过将js代码放在标记后面进行了修复。谢谢:)应该在
之前。这应该是一个注释,只是它没有帮助。这不是真的。这取决于浏览器。有些使用
documentElement
,有些使用
body