我决定每10秒做一次改变身体背景图像的功能。
function Background()
{
var Background_Stage;
switch(Background_Stage)
{
case 0:
{
$('body').css.('background', '#000 url(../../Styles/Callum_Project1/Images/BACKGROUND_1_TEST.png) no-repeat');
Background_Stage++;
setInterval(function(){Background()},10000);
}
case 1:
{
$('body').css.('background', '#000 url(../../Styles/Callum_Project1/Images/BACKGROUND_2_TEST.png) no-repeat');
Background_Stage++;
setInterval(function(){Background()},10000);
}
case 2:
{
$('body').css.('background', '#000 url(../../Styles/Callum_Project1/Images/BACKGROUND_2_TEST.png) no-repeat');
Background_Stage = 0;//Reset
setInterval(function(){Background()},10000);
}
}
}但是当我做这种事的时候
<body onload="Background()"></body>它似乎没有做任何事情,这可能是一个愚蠢的事情寻求帮助,但这是我第一次在学习JavaScript时,我应该说,我使用了jQuery的大部分。
发布于 2013-09-10 15:45:51
您的代码有几个问题:
最后,尽量不要重复自己,这意味着,如果您发现自己一遍又一遍地输入相同的语句,那么您可能会使代码变得更简洁。类似于:
(function()
{
var bgCounter = 0,
backgrounds = [
"../../Styles/Callum_Project1/Images/BACKGROUND_1_TEST.png",
"../../Styles/Callum_Project1/Images/BACKGROUND_2_TEST.png",
"../../Styles/Callum_Project1/Images/BACKGROUND_3_TEST.png"
];
function changeBackground()
{
bgCounter = (bgCounter+1) % backgrounds.length;
$('body').css('background', '#000 url('+backgrounds[bgCounter]+') no-repeat');
setTimeout(changeBackground, 10000);
}
changeBackground();
})();现在,更改背景URL或添加更多是编辑背景数组的简单工作。
发布于 2013-09-10 15:58:52
您也可以尝试这样做:
function Background(){
var imgs = [
"../../Styles/Callum_Project1/Images/BACKGROUND_1_TEST.png",
"../../Styles/Callum_Project1/Images/BACKGROUND_2_TEST.png",
"../../Styles/Callum_Project1/Images/BACKGROUND_3_TEST.png"
],
len = imgs.length,
idx = -1;
setInterval(function(){
idx = (idx+1)%len;
$("body").css("background", "#000 url("+imgs[idx]+")");
}, 10000);
}发布于 2013-09-10 15:34:36
每次调用后台时,都实例化一个名为Background_Stage的新局部变量,其值为undefined。这与任何switch选项都不匹配。
您需要在函数之外声明变量(因此它在函数调用之间持续存在),并给它一个起始值。
https://stackoverflow.com/questions/18723103
复制相似问题