1

我对 jQuery 了解不多,但我一直在使用以下 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 部分?

4

3 回答 3

1

您可以使用 class 属性来定义您希望使用该功能的所有 div,而不是单个 div id。

<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()' );
于 2012-09-13T14:48:41.540 回答
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>
于 2012-09-13T15:04:58.200 回答
1

除了使用 document.getElementById 之外,您可以将相同的类名分配给您想要此功能的所有 div,然后使用 jQuery 选择器 $(".scrollgrid") 选择多个 div,并存储滚动顶部。如果您不想使用 jQuery,可以查看人们编写的自定义函数,用于按类名选择元素。这是一个例子。

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

于 2012-09-13T14:41:46.347 回答