2017-01-06 19 views
0

jqueryスライダにクッキーを追加しようとしていますが、ページを更新してスライダで後方に移動するまで(クッキーの値が追加されると(valuevalue)値+値)私はslideMarginにこれを変更した場合jquery slider with cookie

エラーは、クッキーが関与していないかどう働くslideMargin + =幅()で発生 - 。=それがうまく動作しますが、間違った道を行く幅

。コード:

jQuery(document).ready(function($) { 
$(function() { 
var $slider = $('#slider'); 
var $slideContainer = $('.slides', $slider); 
var $slides = $('.slide', $slider); 
var slideMargin = readCookie('slide'); 
var width = 770; 
var slidesLength = ($slides.length-2)*770; 

     document.onload = checkCookie(); 
     $('#next-gal') 
     .on('click', nextGal); 
     $('#prev-gal') 
     .on('click', prevGal);    

    function nextGal() { 
    slideMargin -= width; 
    createCookie('slide', slideMargin,1); 
    $slideContainer.animate({'margin-left':(slideMargin)},1000,function() { 
      if (slideMargin === (-Math.abs(($slides.length-1)*770))) { 
       slideMargin = -Math.abs(width); 
       $slideContainer.css('margin-left', -width); 
      } 
    }); 
} 
    function prevGal() { 
    slideMargin += width; 
    createCookie('slide', slideMargin,1); 
    $slideContainer.animate({'margin-left':(slideMargin)},1000,function() { 
       if (slideMargin === 0) { 
       slideMargin = -Math.abs(slidesLength); 
       $slideContainer.css('margin-left', -Math.abs(slidesLength)); 
       } 
    }); 
} 

    function createCookie(name,value,days) { 
if (days) { 
    var date = new Date(); 
    date.setTime(date.getTime()+(days*24*60*60*1000)); 
    var expires = "; expires="+date.toGMTString(); 
} 
else var expires = ""; 
document.cookie = name+"="+value+expires+"; path=/"; 
} 

    function readCookie(name) { 
var nameEQ = name + "="; 
var ca = document.cookie.split(';'); 
for(var i=0;i < ca.length;i++) { 
    var c = ca[i]; 
    while (c.charAt(0)==' ') c = c.substring(1,c.length); 
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
} 
return null; 
} 

    function eraseCookie(name) { 
createCookie(name,"",-1); 
} 

    function checkCookie() { 
if (slideMargin != null) { 
     $slideContainer.css('margin-left', -Math.abs(slideMargin)); 
     createCookie('slide', slideMargin,1); 
} 
else { 
    createCookie('slide', -1540 ,1); 
    slideMargin = -770; 
     $slideContainer.css('margin-left', -Math.abs(slideMargin)); 
} 
} 

    }); 
}); 

ご協力いただけると幸いです。

ラス

答えて

0

あなたがページのクッキーから読んだ値は、文字列になります。

var slideMargin = readCookie('slide'); 

:私はこれを交換したい

...さもなければ、あなたはファンキーなものを得るでしょう - 私はあなたが式にそれを使用し始める前に、数にキャストする必要が疑われます

var slideMargin = parseInt(readCookie('slide')) || 0; // if no cookie value, or if it's not a number, default to zero 

これが役立ちますように!

+0

それはそうでしたが、私は前にparseIntを試みましたが、デフォルトはありませんでした。ありがとう –

+0

恐ろしいです!それがうまくいけば、私は本当に答えを良いものとしてマークすることができれば感謝します...ありがとう! – MacPrawn