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