javascript-滚动到div中的元素

我在页面中心有一个绝对定位的div,它用作模式窗口.模态窗口可垂直滚动,右侧带有滚动条.页面本身也可以在右侧滚动条进行垂直滚动.
我希望能够单击一个链接,并将模式窗口滚动到链接的项目.

我几乎可以使用target.scrollIntoView()实现此目的;但整个页面会随着模式窗口一起滚动-我希望它不会移动页面,而只是模式窗口滚动.
如果我使用scrollIntoView(false),则页面本身不会滚动,而模式窗口会滚动,但是目标元素在窗口的底部,而我希望它在顶部.

有什么方法可以手动偏移div中目标的位置?即,如果我使用scrollIntoView(false),则目标显示在div的底部-如果我可以将其偏移视图窗口的高度,则应该可以将其移至顶部.

注意:我不能为此使用JQuery或类似工具.

在此先感谢您的帮助.

解决方法:

这是一个实时演示,我想您正在寻找的是:http://jsfiddle.net/QN3mK/

要做的代码是这样的:(主要检查一下scrollFunc()函数)

function scrollFunc() {
    var est = document.getElementById('est');
    var docPos = f_scrollTop();
    est.scrollIntoView();
    window.scrollTo(0,docPos);
}

function f_scrollTop() {
    return f_filterResults (
        window.pageYOffset ? window.pageYOffset : 0,
        document.documentElement ? document.documentElement.scrollTop : 0,
        document.body ? document.body.scrollTop : 0
    );
}

function f_filterResults(n_win, n_docel, n_body) {
    var n_result = n_win ? n_win : 0;
    if (n_docel && (!n_result || (n_result > n_docel)))
        n_result = n_docel;
    return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

后两个功能只是跨浏览器兼容的方式,我发现它可以获取页面的当前滚动位置.因此,这就是找到一个元素(大概在可滚动div中),获取页面的当前滚动位置,将该元素滚动到视图中(将其放置在可滚动div的顶部),然后将页面位置重置回到那里可能不是理想的解决方案,但可以完成工作.

上一篇:javascript-IE7模式对话框滚动条重叠的内容


下一篇:javascript-jQuery datepicker导致页面溢出