设置滚动位置

时间:2010-11-16 09:51:12

标签: javascript

我正在尝试设置页面上的滚动位置,以便滚动条一直滚动到顶部。

我想我需要这样的东西,但它不起作用:

(function () { alert('hello'); document.body.scrollTop = 0; } ());

有什么想法吗?

4 个答案:

答案 0 :(得分:149)

您可以使用window.scrollTo(),如下所示:

window.scrollTo(0, 0); // values are x,y-offset

答案 1 :(得分:44)

另请注意window.scrollBy(dx,dy)ref

答案 2 :(得分:24)

请注意,如果要滚动元素而不是整个窗口,则元素不具有scrollToscrollBy方法。你应该:

var el = document.getElementById("myel"); // Or whatever method to get the element

// To set the scroll
el.scrollTop = 0;
el.scrollLeft = 0;

// To increment the scroll
el.scrollTop += 100;
el.scrollLeft += 100;

您还可以将window.scrollTowindow.scrollBy函数模仿到网页中所有存在的HTML元素:

Object.defineProperty(HTMLElement.prototype, "scrollTo", {
    value: function(x, y) {
        el.scrollTop = y;
        el.scrollLeft = x;
    },
    enumerable: false
});

Object.defineProperty(HTMLElement.prototype, "scrollBy", {
    value: function(x, y) {
        el.scrollTop += y;
        el.scrollLeft += x;
    },
    enumerable: false
});

所以你可以这样做:

var el = document.getElementById("myel"); // Or whatever method to get the element, again

// To set the scroll
el.scrollTo(0, 0);

// To increment the scroll
el.scrollBy(100, 100);

注意:我们鼓励使用Object.defineProperty,因为直接向prototype添加属性是一种坏习惯(当你看到它时: - )。

答案 3 :(得分:0)

...或者将body替换为documentElement

document.documentElement.scrollTop = 0;