2013-08-13 3 views
0

У меня есть два div на моей странице. Первый (опцияSelect) не прокручивается и остается в самой верхней части страницы. Другой (dataView) прокручивается и находится под первым.javascript scrollTop не работает в div

Я пытаюсь сохранить позицию прокрутки второго div на обратной стороне с помощью scrollTop, но он не работает. Я проверил, что значение scrollTop() устанавливается, показывая его в TextBox.

При обновлении страницы я изменяю текст в этом текстовом поле на значение scrollTop() div2. (рабочий)

Нагрузка на страницу, я хочу установить scrollTop() div2 в предыдущее значение. (не работает)

Может кто-нибудь сказать мне, что я делаю неправильно?

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 
    } 
+0

Не уверен в этой конструкции: '$ (" # ScrollPositionTextBox "). Prop (" value ", position);' - вы попробовали это вместо: '$ (" # ScrollPositionTextBox "). Val (position);' ? –

+0

Значение TextBox устанавливается отлично, поскольку я могу увидеть изменение значения при обновлении моей страницы, но я могу попробовать это. Однако положение полосы прокрутки не меняется. scrollTop (currentScroll) по-прежнему держит его наверху, несмотря ни на что. –

+0

Является ли ваш javascript в документе готовой функцией? Или это полный javascript? Если это полный javascript, тогда проблема заключается в том, что сценарий запущен до загрузки страницы, и вы не можете манипулировать элементами, потому что он не полностью загружен первым. 'jQuery (function ($) {... ваш код для запуска после загрузки страницы здесь ...});' –

ответ

0

Порядок мои функции C# были называться не так.

Мне пришлось установить SetScrollPosition() перед GetScrollPosition(). Я думал, что SetScrollPosition() будет вызываться до загрузки страницы, так как beforePagePostback() вызывается до обновления страницы .. но, по-видимому, нет.

0

Не совсем ответ, но ваш Javascript говорит div.dataStyle и ваш класс КСС DataView. Они должны быть одно и то же или есть что-то еще, чего мы не видим?

Без C#, но scrolltop работает: http://jsfiddle.net/ecarlsonweb/ys3LA/

var currentScroll = "40"; 

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

ой, это было плохо при копировании моего кода. Они на самом деле совпадают. –

+0

Считаете ли вы, что вызов функции C# вызывает проблемы? –

Смежные вопросы