Mik*_*koP 4 javascript jquery loops setinterval
我正在设计一个在后台移动云的网页.我的代码使用jQuery,看起来像这样.
browserWidth = 0;
browserHeight = 0;
clouds = 4;
cloudSpeed = 50;
$(function() {
browserWidth = $(window).width();
browserHeight = $(window).height();
for(i = 0; i < clouds; i++) {
createCloud(cloudSpeed);
}
});
function moveCloud(cloud) {
offset = cloud.offset();
posX = offset.left;
posX--;
if(posX < -250) {
posX = browserWidth;
}
cloud.offset({
left: posX
});
}
function createCloud(speed) {
posY = Math.floor(Math.random() * (browserHeight / 2.5));
posX = Math.floor(Math.random() * (browserWidth - 255));
cloud = $("<div></div>").addClass("cloud").appendTo("body").offset({
top: posY,
left: posX
});
setInterval(function() {
moveCloud(cloud);
}, speed);
}
Run Code Online (Sandbox Code Playgroud)
基本上它使用createCloud
函数来创建四个云(带有背景图像的div),它初始化div并使用设置间隔setInterval
.在区间函数中,我调用moveCloud
将div向左移动一个像素的函数.请参阅上面的代码.
我的问题是它只移动了一个div.我已经读过,可以同时使用多个间隔.
代码有什么问题?
问题是你只有一个,全局的,cloud
.
var
在声明前添加:
var cloud = $("<div></div>").addClass("cloud").appendTo("body").offset({
Run Code Online (Sandbox Code Playgroud)
如果不使用var关键字,则将变量设置为global.