2013-07-11 2 views
0

'image_1.jpg', 'image_2.jpg'등으로 저장된 이미지가 있습니다. '다음'버튼을 클릭하면 새 이미지가로드됩니다. 변수 이름 'rightnow'는 숫자를 증가시키고 img src attr의 URL을 변경하는 데 사용됩니다. 나는이 변수의 값을 쿠키에 저장하려고 노력하고있어 새로운 세션이 사용될 때에도 다음 이미지로드를 계속합니다.쿠키를 사용하여 다음 이미지 계속

브라우저에서 쿠키 값을 확인 했으므로 정상적으로 설정됩니다. 하지만 실제로 새 세션을 사용하면 변수 'rightnow'에 '1'값이 사용되고 첫 번째 이미지가 표시됩니다. 내 코드에 무슨 문제가 있습니까? (사용 jQuery를 쿠키 플러그인 5.0)

$(document).ready(function(){ 
var highone=9; 
var rightnow=$.cookie("mycookieismine"); 
if (rightnow=='NaN') { rightnow=1;} 
     $("#next-img").click(function(){ 
     rightnow=rightnow+1; if (rightnow>highone) {rightnow=1;}; 
     $(".imga-class").attr('src',"http://example.com/images/image_"+rightnow+".jpg"); 
     startTime = new Date().getTime(); 
     var date = new Date(); 
     var minutes = 10; 
     date.setTime(date.getTime() + (minutes * 60 * 1000)); 
     $.cookie("mycookieismine",rightnow, { expires: date }); 
     }); 
    }); 

답변

0

당신은이 라인에 버그 (또는 2)가 :

if (rightnow=='NaN') { rightnow=1;} 

더 쿠키가 설정되어 있지 않은 초기의 경우를 생각해 보자. rightnow 변수는 null이됩니다. 왜냐하면 $ .cookie ("mycookieismine"); null를 돌려줍니다.

null이 NaN과 같지 않아서 rightnow가 추가되면 NaN이됩니다.

이에 if 문을 변경

: 널 (null)이 자바 스크립트에서 falsy 때문에

if (!rightnow) { rightnow=1;} 

이 작동합니다.

if (rightnow=='NaN') { rightnow=1;} 

이의 당신이 실제로 쿠키에 NaN의 저장한다고 가정 해 봅시다 :

실제로이 줄 또 하나의 문제가있다. jQuery 쿠키 플러그인은 마술처럼 쿠키에 저장된 문자열 'NaN'을 실제 값 NaN으로 바꿉니다. 따라서 'NaN'문자열을 NaN 값과 비교하면 false로 평가됩니다. 이 바이올린이 콘솔에서 직접 인쇄 할 내용을 확인하십시오. http://jsfiddle.net/6VMqb/

+0

감사합니다. 변경했습니다. 그러나 나는 새로운 세션에 대한 가치 '1'로 시작하는 것을 여전히 볼 수 있습니다. 'click'함수의 전역 변수 'rightnow'값이 정확합니까? –

+0

'rightnow '의 범위가 정확합니다. 쿠키를 완전히 삭제하여 잘못된 상태를 지우십시오. 처음으로 쿠키 값을 읽은 다음 콘솔에서 어떤 값을 읽었는지 확인한 후에'console.log (rightnow);'를 붙이십시오. –