Javascript 背景切换器

Javascript 背景切换器,javascript,jquery,cookies,Javascript,Jquery,Cookies,大家好,我有一个问题,我似乎无法解决。我会尽量简短地说 我正在尝试在我使用的后台切换器中设置并获取cookies。这个开关工作得很好。。。它在点击时迭代7个背景主题,Cookie似乎也能正常工作,但在页面刷新时,它会恢复为默认的“主题”。我认为Cookie没有问题,因为根据我附加到Cookie的警报,它返回了正确的背景(在警报中)。它只是没有加载正确的主题,即使cookie说它是 我相信我把它缩小到了javascript中的一些代码中,这些代码可能是造成错误背景的原因,但是我不知道如何调整它,使

大家好,我有一个问题,我似乎无法解决。我会尽量简短地说

我正在尝试在我使用的后台切换器中设置并获取cookies。这个开关工作得很好。。。它在点击时迭代7个背景主题,Cookie似乎也能正常工作,但在页面刷新时,它会恢复为默认的“主题”。我认为Cookie没有问题,因为根据我附加到Cookie的警报,它返回了正确的背景(在警报中)。它只是没有加载正确的主题,即使cookie说它是

我相信我把它缩小到了javascript中的一些代码中,这些代码可能是造成错误背景的原因,但是我不知道如何调整它,使其达到我想要的效果

背景(刷新时)将是
var current
所说的任何内容。值0-6将是一个新的背景(刷新时),具体取决于它是什么值。但它不记得刷新时用户的选择。我曾尝试将var current设置为数组
var current=[0,1,2,3,4,5,6],
,但似乎没有帮助。当我这样做时,它没有显示我的7个主题中的任何一个,只显示了body标签css中的默认颜色

当我尝试阵列时,我更改了以下内容:

    if( current < pagesCount - 1 ) {
                    ++current;
                    alert($.cookie('style', current, { expires: 365, path: '/' }));
                }
                else {
                    current = 0;
                }
我对javascript还相当缺乏经验,所以我确信有更好的方法来完成我的目标。任何帮助都将不胜感激!提前谢谢

整个代码块:

var changeTheme = (function() {
var $main = $( '#bg-main' ),
    $pages = $main.children( 'div.bg-page' ),
    $iterate = $( '#iterateEffects' ),
    animcursor = 1,
    pagesCount = $pages.length,
    current = 0,
    isAnimating = false,
    endCurrPage = false,
    endNextPage = false,
    animEndEventNames = {
        'WebkitAnimation' : 'webkitAnimationEnd',
        'OAnimation' : 'oAnimationEnd',
        'msAnimation' : 'MSAnimationEnd',
        'animation' : 'animationend'
    },
    // animation end event name
    animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ],
    // support css animations
    support = Modernizr.cssanimations;

function init() {

    $pages.each( function() {
        var $page = $( this );
        $page.data( 'originalClassList', $page.attr( 'class' ) );
    } );

    $pages.eq( current ).addClass( 'bg-page-current' );

    $iterate.on( 'click', function() {
        if( isAnimating ) {
            return false;
        }
        nextPage( animcursor);
        ++animcursor;
    } );
}

function nextPage( animation ) {

    if( isAnimating ) {
        return false;
    }

    isAnimating = true;

    var $currPage = $pages.eq( current );

        if( current < pagesCount - 1 ) {
            ++current;
            alert($.cookie('style', current, { expires: 365, path: '/' }));
        }
        else {
            current = 0;
        }   

    var $nextPage = $pages.eq( current ).addClass( 'bg-page-current' ),
        outClass = '', inClass = '';

        outClass = 'bg-page-scaleDown';
        inClass = 'bg-page-scaleUpDown bg-page-delay300';


        var classes = ['bg-page-0 bg-page-current','bg-page-1 bg-page-current', 'bg-page-2 bg-page-current', 'bg-page-3 bg-page-current', 'bg-page-4 bg-page-current', 'bg-page-5 bg-page-current', 'bg-page-6 bg-page-current'];

    $currPage.addClass( outClass ).on( animEndEventName, function() {
        $currPage.off( animEndEventName );
        endCurrPage = true;
        if( endNextPage ) {
            onEndAnimation( $currPage, $nextPage );
        }
    } );

    $nextPage.addClass( inClass ).on( animEndEventName, function() {
        $nextPage.off( animEndEventName );
        endNextPage = true;
        if( endCurrPage ) {
            onEndAnimation( $currPage, $nextPage );
        }
    } );

    if( !support ) {
        onEndAnimation( $currPage, $nextPage );
    }

}

function onEndAnimation( $outpage, $inpage ) {
    endCurrPage = false;
    endNextPage = false;
    resetPage( $outpage, $inpage );
    isAnimating = false;
}

function resetPage( $outpage, $inpage ) {
    $outpage.attr( 'class', $outpage.data( 'originalClassList' ) );
    $inpage.attr( 'class', $inpage.data( 'originalClassList' ) + ' bg-page-current' );
}

//Cookies
window.onload = function(e) {
  if($.cookie('style') == undefined) { 
      alert($.cookie('style', current, { expires: 365, path: '/' }));
      current = 0;
  } else {
      current = current;
  alert($.cookie('style'));
  }
}
init();
return { init : init };     
})();
var changeTheme=(函数(){
变量$main=$(“#bg main”),
$pages=$main.children('div.bg-page'),
$iterate=$(“#iterateeeffects”),
animcursor=1,
PageScont=$pages.length,
电流=0,
isAnimating=false,
endCurrPage=false,
endNextPage=false,
animEndEventNames={
“WebkitAnimation”:“webkitAnimationEnd”,
“OAnimation”:“oAnimationEnd”,
“msAnimation”:“MSAnimationEnd”,
“动画”:“动画结束”
},
//动画结束事件名称
animEndEventName=animEndEventNames[modernizer.前缀('animation'),
//支持css动画
支持=现代化;
函数init(){
$pages.每个(函数(){
var$page=$(此);
$page.data('originalClassList',$page.attr('class'));
} );
$pages.eq(当前).addClass('bg page current');
$iterate.on('click',function(){
如果(正在进行模拟){
返回false;
}
下一页(动画光标);
++动画光标;
} );
}
功能下一页(动画){
如果(正在进行模拟){
返回false;
}
isAnimating=true;
var$currPage=$pages.eq(当前);
如果(当前<页面搜索-1){
++电流;
警报($.cookie('style',current,{expires:365,path:'/'}));
}
否则{
电流=0;
}   
var$nextPage=$pages.eq(current).addClass('bg page current'),
超出类='',包括类='';
outClass='bg page scaleDown';
inClass='bg页面缩放向下bg-page-delay300';
变量类别=['bg-page-0当前bg页面','bg-page-1当前bg页面','bg-page-2当前bg页面','bg-page-3当前bg页面','bg-page-4当前bg页面','bg-page-5当前bg页面','bg-page-6当前bg页面'];
$currPage.addClass(outClass).on(animEndEventName,function()){
$currPage.off(animEndEventName);
endCurrPage=true;
如果(结束下一页){
统一信息($currPage,$nextPage);
}
} );
$nextPage.addClass(inClass).on(animEndEventName,function(){
$nextPage.off(animEndEventName);
endNextPage=true;
如果(结束页){
统一信息($currPage,$nextPage);
}
} );
如果(!支持){
统一信息($currPage,$nextPage);
}
}
函数onEndAnimation($outpage,$inpage){
endCurrPage=false;
endNextPage=false;
重置页面($outpage,$inpage);
isAnimating=假;
}
函数重置页($outpage,$inpage){
$outpage.attr('class',$outpage.data('originalClassList');
$inpage.attr('class',$inpage.data('originalClassList')+'bg page current');
}
//饼干
window.onload=函数(e){
如果($.cookie('style')==未定义){
警报($.cookie('style',current,{expires:365,path:'/'}));
电流=0;
}否则{
电流=电流;
警报($.cookie('style'));
}
}
init();
返回{init:init};
})();

如果这命中If语句的“else”部分,则在页面加载时未定义当前值。我想你需要做一些类似的事情

   current = $.cookie('style');
还是在页面加载时总是报告为未定义

我刚刚发表了一个评论,但缺乏代表点阻止了这一点

    //Cookies
    window.onload = function(e) {
      if($.cookie('style') == undefined) { 
          alert($.cookie('style', current, { expires: 365, path: '/' }));
          current = 0;
      } else {
          current = current;
      alert($.cookie('style'));
      }
    }

在页面加载时,它将显示任何值0-6,具体取决于我上次使用的主题。在第一个页面加载时,它会提醒我为style=0设置了cookie。我曾尝试将
var current
设置为cookie,但它似乎对我不起作用。所以,在设置current之后,调用设置背景的函数,或者创建一个将背景颜色更改为设置值的函数。我想我已经这样做了。我尝试将var current设置为cookie的值,但仍然没有任何新的变化。看起来,
var current
的值正在更新,或者至少cookie告诉我的是,但是浏览器仍然默认为第一个后台选项。感谢您的回复。window.onload=function(e){},这发生在整个页面加载后,例如,您的背景。它已经加载,这意味着在cookie中发现用户保存了不同的背景后,您需要“更改背景”。使用类似$(“body.test”).css(“背景色”、“红色”);不是红色,而是电流的值。我成功了!我不得不搬来搬去
   current = $.cookie('style');
    //Cookies
    window.onload = function(e) {
      if($.cookie('style') == undefined) { 
          alert($.cookie('style', current, { expires: 365, path: '/' }));
          current = 0;
      } else {
          current = current;
      alert($.cookie('style'));
      }
    }