【发布时间】:2017-05-08 17:50:57
【问题描述】:
我目前正在研究图像旋转器。旋转部分已完成,但是我正在根据我发现的需要扩展功能。
目标:在包含硬编码图像的幻灯片的预设列表中旋转,但是在随后的每次旋转中,使用 js 为需要变化的特定幻灯片切换到新图像。
下面的脚本运行良好,但我觉得这不是最有效的方法。目前,我正在通过为我选择作为“不同”的每个特定幻灯片运行一个新的循环和函数来解决它。我的猜测是有一种方法可以使用一个函数和循环来完成,但我不太确定如何去做。
Anology:假设我有一个显示汽车列表的图像旋转器,它每 5 秒旋转到下一张幻灯片。每张幻灯片都是为不同型号的汽车指定的,但是对于某些型号,我想在整个旋转器的每次迭代中显示该型号的不同变体。
示例:
这里列出了旋转器每次通过的打印方式。
- Ford Focus
- Toyota Celica
- Hyundai Elantra
- Dodge Ram
- Motorcycle
- Ford Focus
- Toyota Celica GTS
- Hyundai Elantra
- Dodge Ram w/ additional accessories
- Motorcycle
- Ford Focus
- Toyota Celica w/ Spoiler
- Hyundai Elantra
- Dodge Ram different color
- Motorcycle
这是我当前的脚本:
<script>
window.onload=function() {
imgCont = document.getElementById('example1');
c_imgCont = document.getElementById('example2');
}
var myIndex = 0;
carousel();
function carousel() {
var i;
var x = document.getElementsByClassName("slide");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
myIndex++;
if (myIndex > x.length) {myIndex = 1;
if (typeof(imgCont) != 'undefined' && imgCont != null)
{
swapImage();
}
if (typeof(c_imgCont) != 'undefined' && c_imgCont != null)
{
swapImageExample2();
}
}
x[myIndex-1].style.display = "block";
setTimeout(carousel, x[myIndex-1].dataset.timing);
}
var picPaths = ['image1.png','img2.png','img3.png','img4.png'];
var curPic = -1;
//preload the images for smooth animation
var imgO = new Array();
for(i=0; i < picPaths.length; i++) {
imgO[i] = new Image();
imgO[i].src = picPaths[i];
}
function swapImage() {
curPic = (++curPic > picPaths.length-1)? 0 : curPic;
imgCont.src = imgO[curPic].src;
}
var c_picPaths = ['otherimg1.png','otherimg2.png'];
var c_curPic = -1;
//preload the images for smooth animation
var c_imgO = new Array();
for(l=0; l < c_picPaths.length; l++) {
c_imgO[l] = new Image();
c_imgO[l].src = c_picPaths[l];
}
function swapImageExample2() {
c_curPic = (++c_curPic > c_picPaths.length-1)? 0 : c_curPic;
c_imgCont.src = c_imgO[c_curPic].src;
}
</script>
【问题讨论】:
-
小心术语 - image rotation vs image swapping
-
抱歉,在我的行业中,这种特定产品被称为旋转器(因为它会自动通过幻灯片旋转)。绝对需要小心!
标签: javascript rotation