javascript scrollTop在div中不起作用

时间:2013-08-13 22:56:02

标签: c# javascript jquery asp.net scroll

我的页面上有两个div。第一个(optionSelect)不可滚动并保持在页面的最顶部。另一个(dataView)是可滚动的,位于第一个下面。

我正在尝试使用scrollTop在postbacks上保留第二个div的滚动条位置,但它不起作用。我验证了scrollTop()值是通过在TextBox中显示来设置的。

在页面更新中,我将该TextBox中的文本更改为div2的scrollTop()值。 (工作)

在页面加载时,我想将div2的scrollTop()设置为上一个值。 (不工作)

有人能告诉我我做错了吗?

CSS:

.optionSelect {
    font-family: Consolas;
    overflow: hidden;
    position: absolute;
    width: 100%;
    height: 245px;
}

.dataView {
overflow: auto;
position: absolute;
width: 100%;
top: 245px;
bottom: 0;
}

body {
overflow: auto;
width: 100%;
height: 100%;
}

使用Javascript:

   var currentScroll = "<%=GetScrollPosition()%>"; // C# function to get scroll position value
   $("div.dataStyle").scrollTop(currentScroll);

   function beforePagePostback() {

        $("#loadingImage").show();

        var position = $("div.dataStyle").scrollTop();

        $("#ScrollPositionTextBox").prop("value", position); // sets scroll position to text box

        "<%=SetScrollPosition()%>"; // C# func that gets the scroll position from the text box
    }

2 个答案:

答案 0 :(得分:0)

不是真的答案,但你的javascript说div.dataStyle和你的css类是dataView。这些应该是同一个还是还有其他我们没有看到的东西?

没有C#但是scrolltop正在运行:http://jsfiddle.net/ecarlsonweb/ys3LA/

var currentScroll = "40"; 

$(function(){
    $("div.dataView").scrollTop(currentScroll);
});

答案 1 :(得分:0)

调用我的C#函数的顺序是错误的。

我必须在GetScrollPosition()之前使用SetScrollPosition()。我认为SetScrollPosition()会在页面加载之前被调用,因为在页面更新之前调用beforePagePbackback()..但显然不是。