Javascript 将多个数组参数传递到幻灯片放映的setTimeout时出现问题
我正在尝试创建一个简单的幻灯片,由3个旋转图像组成,当最后一个图像显示后,将立即重新开始,时间间隔为5000毫秒Javascript 将多个数组参数传递到幻灯片放映的setTimeout时出现问题,javascript,arrays,slideshow,settimeout,rotator,Javascript,Arrays,Slideshow,Settimeout,Rotator,我正在尝试创建一个简单的幻灯片,由3个旋转图像组成,当最后一个图像显示后,将立即重新开始,时间间隔为5000毫秒 <div id="slideshow"> </div> <script type="text/javascript"> var imageArray = ['Image1','Image2','Image3']; var currentIndex = 0; nextPic = function(currentIndex,sli
<div id="slideshow"> </div>
<script type="text/javascript">
var imageArray = ['Image1','Image2','Image3'];
var currentIndex = 0;
nextPic = function(currentIndex,slideshow) {
var theHTML = '<img src="http://www.domain.com/Pics/Test-' + imageArray[currentIndex] + '.jpg">';
document.getElementById("slideshow").innerHTML = theHTML;
if (currentIndex < imageArray.length) {
currentIndex = currentIndex + 1;
}
else {
currentIndex = 0;
}
setTimeout("nextPic(" + currentIndex + ")", 5000);
}
nextPic(currentIndex, "slideshow");
</script>
var imageArray=['Image1','Image2','Image3'];
var currentIndex=0;
nextPic=函数(当前索引、幻灯片){
var theHTML='';
document.getElementById(“幻灯片”).innerHTML=HTML;
if(currentIndex
我发现的Javascript代码的每一个变体都产生了相同的结果:在最后一个图像(Test-Image3.jpg)之后,JS尝试在重置回第一个图像之前显示一个未定义的图像(“Test-undefined.jpg”)。除此之外,它工作得非常好,非常令人恼火。您需要考虑这样一个事实,即在检查数组长度后添加一个:
if (currentIndex < imageArray.length - 1) {
currentIndex = currentIndex + 1;
}
else {
currentIndex = 0;
}
但是,实际上根本不需要传递参数,因为函数可以只使用全局变量。(最好不要有一个,但既然你有,那么,你最好使用它。)更改为:
if (currentIndex < imageArray.length - 1) {
currentIndex = currentIndex + 1;
}
您可以使用:
currentIndex ++;
使用setInterval()的更干净的实现:
var slide = function(){
//check if we are at the end of the array, either stop or replay.
if (currentIndex == imageArray.length){
currentIndex = 0; //replay slideshow
/*to stop slideshow add this:
* window.clearInterval(slideInt)
* return false;
*/
}
var theHTML = '<img src="http://www.domain.com/Pics/Test-' +
imageArray[currentIndex] + '.jpg">';
document.getElementById("slideshow").innerHTML = theHTML;
currentIndex +=1;
}
var imageArray = ['Image1','Image2','Image3'];
var currentIndex = 0;
var speed = 5000;
var slideInt = window.setInterval(slide,speed); //skip a photo every 5000 milis
var slide=function(){
//检查我们是否在阵列的末尾,停止或重播。
if(currentIndex==imageArray.length){
currentIndex=0;//重播幻灯片
/*要停止幻灯片放映,请添加以下内容:
*窗口清除间隔(slideInt)
*返回false;
*/
}
var theHTML='';
document.getElementById(“幻灯片”).innerHTML=HTML;
currentIndex+=1;
}
var imageArray=['Image1','Image2','Image3'];
var currentIndex=0;
var速度=5000;
var slideInt=window.setInterval(滑动,速度)//每5000毫米跳过一张照片
完美!谢谢出于好奇,(currentIndex<3)为什么不工作?@user2097213你有没有。。。嗯,你在句子中间迷路了吗PThanks…javascript新手,很高兴这一次它没有丢失分号。
currentIndex ++;
var slide = function(){
//check if we are at the end of the array, either stop or replay.
if (currentIndex == imageArray.length){
currentIndex = 0; //replay slideshow
/*to stop slideshow add this:
* window.clearInterval(slideInt)
* return false;
*/
}
var theHTML = '<img src="http://www.domain.com/Pics/Test-' +
imageArray[currentIndex] + '.jpg">';
document.getElementById("slideshow").innerHTML = theHTML;
currentIndex +=1;
}
var imageArray = ['Image1','Image2','Image3'];
var currentIndex = 0;
var speed = 5000;
var slideInt = window.setInterval(slide,speed); //skip a photo every 5000 milis