需要帮助缩短/循环javascript函数使用循环和替代mod吗
我有一个动画,根据页面上的滚动位置显示8个可能帧中的一个。每次滚动20px,将显示下一帧,直到到达第8帧,然后在160px之后返回到第1帧。目前,如果页面是2000px长,我需要100条if语句,这看起来很荒谬。必须有一种方法,使用一个使用循环的好函数将它变成几行。一位朋友说这将是“mod”的工作,但显然javascript不能做mod或remainder 我已经摘录了下面的脚本,但你可以在这里看到整个想法需要帮助缩短/循环javascript函数使用循环和替代mod吗,javascript,Javascript,我有一个动画,根据页面上的滚动位置显示8个可能帧中的一个。每次滚动20px,将显示下一帧,直到到达第8帧,然后在160px之后返回到第1帧。目前,如果页面是2000px长,我需要100条if语句,这看起来很荒谬。必须有一种方法,使用一个使用循环的好函数将它变成几行。一位朋友说这将是“mod”的工作,但显然javascript不能做mod或remainder 我已经摘录了下面的脚本,但你可以在这里看到整个想法 函数滚动(){ 如果(window.pageYOffset
函数滚动(){
如果(window.pageYOffset<20){
setTimeout(“document.images['ball'].src=imageArray[0].src”,0);
}
else if(window.pageYOffset<40){
setTimeout(“document.images['ball'].src=imageArray[1].src”,0);
}
否则如果(window.pageYOffset<60){
setTimeout(“document.images['ball'].src=imageArray[2].src”,0);
}
否则如果(window.pageYOffset<80){
setTimeout(“document.images['ball'].src=imageArray[3].src”,0);
}
您可以在javascript中使用模,它是%
字符
但您可以使用以下方式缩短代码:
function scroll() {
setTimeout(function() {
document.images['ball'].src = imageArray[window.pageYOffset % 7].src;
}, 0);
return false;
}
只是一个旁注,不要将字符串传递给使用
eval
(即evil
)的setTimeout
。而是传递函数。setTimeout(function(){document.images['ball'].src=imageArray[0].src;},0)
谢谢,我会记住你不应该使用那种代码…对于那种事情,最好使用精灵,就像在游戏中一样,因为你不需要在滚动时等待加载的图像…查找
function scroll() {
setTimeout(function() {
document.images['ball'].src = imageArray[window.pageYOffset % 7].src;
}, 0);
return false;
}