单页中的多个会话对象

时间:2016-03-15 16:46:36

标签: javascript vb.net session-storage

我在两个标签的同一页面中定义了两个会话存储空间。我正在检查某些条件并为会话存储分配值,但问题是更改一个会话对象的值也会更改其他值。两个会话存储都有不同的变量名称,我不确定它为什么会发生。

1-  sessionStorage.setItem('ActiveSortLabelForFlight', x);

2-  sessionStorage.setItem('ActiveSortLabel', x);

两个会话stoarage都在单独的JavaScript页面上

for ActiveSortLabel

$(document).ready(function () {


var ActiveSortLabelFromPreviousReload = sessionStorage.getItem('ActiveSortLabel');

if (ActiveSortLabelFromPreviousReload != null && ActiveSortLabelFromPreviousReload != "") {
    $("#" + ActiveSortLabelFromPreviousReload).addClass("ActiveSortLabel");
}
else
{
    var x = $(".SortFilterMenu li").find("a[selected=selected]").attr("id");

    $("#" + $(".SortFilterMenu li").find("a[selected=selected]").attr("id")).addClass("ActiveSortLabel");

    if (x != null)
    {
        sessionStorage.setItem('ActiveSortLabel', x);
    }

    if(x==null)
    {
        var selectElementID = $(".SortFilterMenu li").find("ul li a[selected = selected]").closest("li").parent("ul").parent("li").find('a:first').attr("id");

        sessionStorage.setItem('ActiveSortLabel', selectElementID);

        $("#" + selectElementID).addClass("ActiveSortLabel");
    }
}

for ActiveSortLabelFlight

(document).ready(function () {

var ActiveFlightSortLabelFromPreviousReload = sessionStorage.getItem('ActiveSortLabelForFlight');

if (ActiveFlightSortLabelFromPreviousReload != null && ActiveFlightSortLabelFromPreviousReload != "") {
    $("#" + ActiveFlightSortLabelFromPreviousReload).addClass("ActiveSortLabel");
}
else
{
    var x = $(".SortFlightFilterMenu li").find("a[selected=selected]").attr("id");

    sessionStorage.setItem('ActiveSortLabelForFlight', x);

    $("#" + $(".SortFlightFilterMenu li").find("a[selected=selected]").attr("id")).addClass("ActiveSortLabel");

    if (x == null) {
        var selectElementID = $(".SortFlightFilterMenu li").find("ul li a[selected = selected]").closest("li").parent("ul").parent("li").find('a:first').attr("id");

        sessionStorage.setItem('ActiveSortLabelForFlight', selectElementID);

        $("#" + selectElementID).addClass("ActiveSortLabel");
    }
}

1 个答案:

答案 0 :(得分:0)

我相信你的问题源于两个document.ready函数。

虽然我没有找到具体的原因,但我只是因为有一堆我无法添加到评论中的代码而在答案中发布。我已将您的代码组合并清理为单个函数。请尝试这个并报告回来:

$(function () {

    var asl = sessionStorage.getItem('ActiveSortLabel');
    var afsl = sessionStorage.getItem('ActiveSortLabelForFlight');

    if (asl !== null && asl !== "") {
       $("#" + asl).addClass("ActiveSortLabel");
    } else {
      var x = $(".SortFilterMenu li").find("a[selected=selected]").attr("id");
      $("#" + x).addClass("ActiveSortLabel");

      if (x !== null) {
         sessionStorage.setItem('ActiveSortLabel', x); 
      } else {
        var selectElementID = $(".SortFilterMenu li").find("ul li a[selected =  selected]").closest("li").parent("ul").parent("li").find('a:first').attr("id");
        sessionStorage.setItem('ActiveSortLabel', selectElementID);
        $("#" + selectElementID).addClass("ActiveSortLabel");
      }
    }

    if (afsl !== null && afsl !== "") {
      $("#" + afsl).addClass("ActiveSortLabel");
    } else {
      x = $(".SortFlightFilterMenu li").find("a[selected=selected]").attr("id");
      sessionStorage.setItem('ActiveSortLabelForFlight', x);
      $("#" + x).addClass("ActiveSortLabel");

      if (x == null) {
        var selectElementID = $(".SortFlightFilterMenu li").find("ul li a[selected = selected]").closest("li").parent("ul").parent("li").find('a:first').attr("id");
        sessionStorage.setItem('ActiveSortLabelForFlight', selectElementID);
        $("#" + selectElementID).addClass("ActiveSortLabel");
      }
    }
});