2010-04-15 2 views
0

클릭 한 탐색 컨테이너마다 쿠키를 설정하고 있습니다.splice()가 올바르게 작동하지 않습니다.

쿠키 값을 조인하고 설정 한 배열을 설정합니다. 클릭하면 다시 배열에서 제거됩니다.

어떻게 든 버그가 있습니다.

다른 요소를 클릭 한 후에 만 ​​연결됩니다. 그리고 그것은 이상하게 행동합니다.

그것은 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); 
} 

} 
}); 

답변

2
for(i in setCookieHelper){ 
    if(value == setCookieHelper[i]){ 

같이 읽고 올바른 방법이 아니라고 할 수 있습니다

for element in setCookieHelper 

이 요소는 INT하지 않을 수 있습니다 그것은 또한 당신의 스플 라이스가 실패합니다 요소에 스플 라이스 할 위치가 포함되어 있는지 확인한 다음 스플 라이스를 시도하기 전에 값이 setCookieHelper 길이 내에 있는지 확인해야합니다.

당신이 사용해야 주어진 위치에서 스플 라이스 할 경우에 대한 :

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

스플 라이스 인덱스는 여기서 "접합"와 "접합"요소의 양을 시작할 것으로 예상하고있다.

+0

감사합니다. 나는 당신이 말하는 것을 들었습니다. 아마 올바른 방법 인'splice()'를 사용하지 않았을 것입니다. 내가 원하는 것은 발견 된 번호를 제거해야한다는 것입니다. – adardesign

+1

네가 원하는 것보다 네가 원하는 것일 뿐이다. :) 그냥 평범한 것 대신에 그냥 바꾼다. – fmsf