2012-09-13 65 views
1

我不知道很多關於jQuery的,但我一直在使用下面的JavaScript代碼,使表在pageback保持滾動條的位置:使用一個多段javascript代碼

<script type="text/javascript"> 
    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("grdWithScroll").scrollTop = strPos; 
     } 
    } 
    function SetDivPosition() { 
     var intY = document.getElementById("grdWithScroll").scrollTop; 
     document.cookie = "yPos=!~" + intY + "~!"; 
    } 
</script> 

<div id="grdWithScroll" onscroll="SetDivPosition()"> 

它適用於單獨的div。但是我怎麼能擴展這個用於第二個div部分?

回答

1

找到了我一直在尋找在這裏:

http://social.msdn.microsoft.com/Forums/nb-NO/jscript/thread/ad18ed20-8ae2-4c13-9a51-dcb0b1397349

<script language="javascript" type="text/javascript"> 

//This function sets the scroll position of div to cookie. 
function setScrollPos() { 
    var div1Y = document.getElementById('div1').scrollTop; 
    var div2Y = document.getElementById('div2').scrollTop; 
    document.cookie = "div1Pos=!*" + div1Y + "*!" + 
    " div2Pos=|*" + div2Y + "*|"; 
} 

///Attaching a function on window.onload event. 
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.body.scrollTop = strPos; 
    } 

    /// This condition will set scroll position of <div> 1. 
    if (strCook.indexOf("iv1Pos=!*") != 0) { 
     var intdS = strCook.indexOf("iv1Pos=!*"); 

     var intdE = strCook.indexOf("*!"); 
     var strdPos = strCook.substring(intdS + 9, intdE); 
     document.getElementById('div1').scrollTop = strdPos; 
    } 

    /// This condition will set scroll position of <div> 2. 
    if (strCook.indexOf("iv2Pos=!*") != 0) { 
     var intdS = strCook.indexOf("iv2Pos=|*"); 
     var intdE = strCook.indexOf("*|"); 
     var strdPos2 = strCook.substring(intdS + 9, intdE); 
     document.getElementById('div2').scrollTop = strdPos2; 
    } 
} 

</script> 
+0

這基本上只是一個複製粘貼代碼。想象一下,如果你有3個div,你想添加滾動,甚至20!我認爲你應該研究通用類解決方案,它更加細緻地解決了這個問題。 – supertopi

1

除了使用document.getElementById之外,還可以爲所有需要此功能的div賦予相同的類名稱,然後使用jQuery選擇器$(「。scrollgrid」)選擇多個div,並存儲滾動的頂部。如果你不想使用jQuery,你可以看看人們編寫的自定義函數來按類名選擇元素。這是一個例子。

http://www.netlobo.com/javascript_getelementsbyclassname.html

1

而不是一個單一的DIV ID,你可以使用類屬性來定義所有要使用的功能的div。

<div id="grdWithScroll" class="coolScroll" onscroll="SetDivPosition()"> 
</div> 
<div id="abcWithScroll" class="coolScroll" onscroll="SetDivPosition()"> 
</div> 

使用jQuery(或其他圖書館),方便地選擇所有div與所述類和訪問scrollTop的屬性

$('.coolScroll').each(function() 
{ 
// do something with scrollTop 
} 

你也可以使用類選擇器設置onscroll功能。

$('.coolScroll').attr('onscroll' , 'javascript:SetDivPosition()');