代码之家  ›  专栏  ›  技术社区  ›  adardesign

接头()工作不正常

  •  0
  • adardesign  · 技术社区  · 15 年前

    我正在为单击的每个导航容器设置cookie。

    它设置一个连接的数组并设置cookie值。 如果再次单击,则将其从数组中移除。

    不知怎么搞的。

    它只在单击其他元素后拼接。然后它的行为很奇怪。

    可能是那个 splice 不是正确的方法

    var navLinkToOpen;
    var setNavCookie = function(value){
    var isSet = false;
    var checkCookies = checkNavCookie()
      setCookieHelper = checkCookies? checkCookies.split(","): [];
      for(i in setCookieHelper){
        if(value == setCookieHelper[i]){
           setCookieHelper.splice(value,1);
           isSet = true;
    }
    }
    if(!isSet){setCookieHelper.push(value)}
    setCookieHelper.join(",")
     document.cookie = "navLinkToOpen"+"="+setCookieHelper;
    }
    
    
    var checkNavCookie = function(){
    var allCookies = document.cookie.split( ';' );
    for (i = 0; i < allCookies.length; i++ ){
     temp = allCookies[i].split("=")
     if(temp[0].match("navLinkToOpen")){
      var getValue = temp[1]
      }
     }
    return getValue || false
    }
    
    
    
    $(document).ready(function() {
      $("#LeftNav li").has("b").addClass("navHeader").not(":first").siblings("li").hide()
      $(".navHeader").click(function(){
    $(this).toggleClass("collapsed").nextUntil("li:has('b')").slideToggle(300);
    setNavCookie($('.navHeader').index($(this)))
    return false
      }) 
    
    var testCookies = checkNavCookie();
     if(testCookies){
    finalArrayValue = testCookies.split(",")
    for(i in finalArrayValue){
     $(".navHeader").eq(finalArrayValue[i]).toggleClass("collapsed").nextUntil(".navHeader").slideToggle   (0);
    }
    
    }
    });
    
    1 回复  |  直到 13 年前
        1
  •  2
  •   fmsf    15 年前
    for(i in setCookieHelper){
        if(value == setCookieHelper[i]){
    

    阅读如下:

    for element in setCookieHelper
    

    此元素可能不是int,这会导致拼接失败,还必须检查元素是否包含要拼接的位置,然后在尝试拼接之前,必须检查其值是否在setCookiehelper lenght范围内。

    如果要在给定位置拼接,应使用:

    for(i=0;i<setCookieHelper.lenght;i++){
         if(value == setCookieHelper[i]){
             setCookieHelper.splice(i,1);
             isSet = true;
         }
    }
    

    splice需要一个开始“拼接”的索引和“拼接”元素的数量。