使用 jQuery 更改正文背景图像
Change body background image with jQuery
我决定创建一个函数,每 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。
你的代码有几个问题:
- Background_Stage 的值不会在对后台的调用之间保留,并且在任何情况下,您都不会为Background_Stage分配值。 使用 setTimeout 而不是 setInterval。
- setTimeout 将在分配的时间结束时调用该函数一次。 setInterval 会一次又一次地调用同一个函数,直到明确取消。你拥有它的方式,你最终会运行大量的并发 setIntervals。
- 你不需要 css 和以下括号之间的"."。
最后,尽量不要重复自己,这意味着如果你发现自己一遍又一遍地输入或多或少相同的语句,那么你可能会使代码更干净。像这样:
(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 或添加更多是编辑背景数组的简单工作。
你也可以试试这个:
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);
}
每次调用 background 时,都会实例化一个名为 Background_Stage
的新局部变量,其值为 undefined
。这与您的任何switch
选项都不匹配。
外部声明变量(以便它在调用函数之间持续存在)并为其提供起始值。
- 您的
Backgroud_Stage
未初始化 - 您的
setInterval
放置会导致非常严重的问题 - 还有无效的语法。
总的来说,你的代码可以像这样更简单:
var Stage = 0;
setInterval(function() {
var bg = '#000 url(../../Styles/Callum_Project1/Images/BACKGROUND_'+(Stage+1)+'_TEST.png) no-repeat';
document.body.style.background = bg;
Stage = ++Stage % 3;
}, 10000);
相关文章:
- 可以在这里为背景图像设置滤镜吗
- 使用 js 将背景图像设置为 HTML
- 如何使用css动画/javascript使具有背景图像的元素出现
- 循环浏览多个身体背景图像
- 背景图像顶部的滚动图像不移动
- 在pdfmake中嵌入背景图像
- 修复选择菜单时的背景图像
- 使用css()设置背景图像;不起作用
- 鼠标悬停时如何居中放大背景图像
- 强制谷歌为javascript背景图像编制索引
- 淡入不带HTML的背景图像
- 具有淡入淡出效果的全背景图像
- 未加载随机背景图像
- 背景图像前显示Javascript警报
- javascript背景图像位置循环
- CSS动画背景图像的过渡越来越暗
- "Ken Burns效应”;悬停背景图像
- 通过ID JavaScript显示随机背景图像
- JavaScript背景图像
- 带有图像和背景图像的ClipTo