2016-10-12 3 views
0

Отчаянно протягивая руку прямо сейчас!Поддержание положения прокрутки в двух столбцах при перезагрузке

Наша веб-страница содержит три столбца с тремя разными div: «primary», «main» и «secondary».

Я хотел был бы поддерживать scrollpositions все divs on reload. Для первого столбца «primary» я использую этот скрипт ниже, который работает как шарм.

Я знаю, что getElementbyID может получить только один div, так как я мог это сделать?

window.onload = function() { 
    var strCook = document.cookie; 
    if (strCook.indexOf("!~") != 0) { 
    var intS = strCook.indexOf("!~"); 
    var intE = strCook.indexOf("~!"); 
    var strPos = strCook.substring(intS + 2, intE); 
    document.getElementById("primary").scrollTop = strPos; 
    } 
} 

function SetDivPosition() { 
    var intY = document.getElementById("primary").scrollTop; 
    document.cookie = "yPos=!~" + intY + "~!"; 
} 
+0

Я могу ошибаться, но не было бы намного легче просто использовать хэштеги ? 'website.com # primary'> переходит в' id = "primary' – Roberrrt

+0

Привет, Roberrrt! Спасибо за ваш ответ, что бы это означало в коде, вы имеете в виду? – Hanna

ответ

0

То, как вы установите печенье, кажется, создан в первую очередь для одного элемента - Я хотел бы изменить это так, что вы можете установить куки значение ключа спаривания.

Используя некоторые функции для получения и установки куки, я бы тогда изменить код на:

//add cookie functions 
 
function setCookie(cname, cvalue, exdays) { 
 
    var d = new Date(); 
 
    d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
 
    var expires = "expires="+ d.toUTCString(); 
 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
 
} 
 

 
function getCookie(cname) { 
 
    var name = cname + "="; 
 
    var ca = document.cookie.split(';'); 
 
    for(var i = 0; i <ca.length; i++) { 
 
     var c = ca[i]; 
 
     while (c.charAt(0)==' ') { 
 
      c = c.substring(1); 
 
     } 
 
     if (c.indexOf(name) == 0) { 
 
      return c.substring(name.length,c.length); 
 
     } 
 
    } 
 
    return ""; 
 
} 
 

 
//I am assuming you will have some sort of on scroll function for setting your cookie. Change this to a function so you can bind it multiple times 
 
function bindScrollEvent(elementId) { 
 
    var element = document.getElementById(elementId); 
 
    
 
    element.onscroll = function() { 
 
    setCookie(elementId, element.scrollTop); // use the element id to set the cookie to the scrolltop value 
 
    }; 
 
    
 
    // once the event is bound, you can set it's current scroll position 
 
    var scrollTopPosition = getCookie(elementId); 
 
    
 
    if (scrollTopPosition !== '') { 
 
    element.scrollTop = scrollTopPosition; 
 
    } 
 
} 
 

 
// reload the div positions when the document loads 
 
window.onload = function() { 
 
    bindScrollEvent('primary'); 
 
    bindScrollEvent('secondary'); 
 
    bindScrollEvent('main'); 
 
}

+0

Прежде всего, большое спасибо за принятие ваше время, чтобы попытаться помочь мне! Поскольку я не очень хорошо разбираюсь в Java-скриптах, я должен задать вам несколько вопросов: должен ли я как-то вызывать скрипт в теге id HTML? С onscroll = "... «?» или подобное? Тогда я получил сообщение об ошибке для строки «if (scrollTopPosition! === '') {« есть ли там »=« слишком много? »Thanx снова! – Hanna

+0

hahaha, да, один дополнительный' = ' там, где есть другой вариант, вы должны запустить это, когда запускался ваш другой скрипт – Pete

+0

Спасибо, Пит! Работает как шарм! Вы спасли мне много времени и хлопот! – Hanna

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