Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-图像不循环/旋转_Javascript_Image - Fatal编程技术网

Javascript-图像不循环/旋转

Javascript-图像不循环/旋转,javascript,image,Javascript,Image,我正在编写一个脚本,在javascript中旋转/循环浏览图像,同时遵守循环浏览图像次数的限制。我所拥有的如下: <a id="imageurl"><img id="Rotating1" border="0"></img></a> <script language="JavaScript"> var delay = 3000; //6000 = change to next image after 6 seconds var cyc

我正在编写一个脚本,在javascript中旋转/循环浏览图像,同时遵守循环浏览图像次数的限制。我所拥有的如下:

<a id="imageurl"><img id="Rotating1" border="0"></img></a>

<script language="JavaScript">

var delay = 3000; //6000 = change to next image after 6 seconds
var cycles = 2;
var currentCycle = 0;

function RotateImages(Start, delay)
{
    var a = new Array("frown.gif","grim.gif","smile.gif", "bomb.gif");
    var c = new Array("url1", "url2", "url3", "url4");
    var b = document.getElementById('Rotating1');
    var d = document.getElementById('imageurl');
    var totalCycles = cycles * a.length;
//  alert ("currentCycle: " + currentCycle);
//  alert ("totalCycles: " + totalCycles);

        if (Start>=a.length) 
            Start=0;
        b.src = a[Start];
        d.href = c[Start];

        if (currentCycle < totalCycles) {
            window.setTimeout("RotateImages(" + (Start+1) + ")", delay);
            currentCycle++;
        }
}

RotateImages(0, delay);

</script>

当我取消对警报框的注释时,脚本的行为就像它在工作一样。当我把它们注释掉时,旋转似乎停止了。有没有关于到底发生了什么以及如何修复的想法


谢谢

也许您想更改此行:

window.setTimeout("RotateImages(" + (Start+1) + ")", delay);
进入:


因此,下次调用RotateImages时,它将保持延迟。

需要考虑的一个基本问题是设置超时。第一个参数可以是对函数的引用,无论它是实际引用还是字符串引用,但不能同时传递参数

要执行所需操作,需要向setTimeout传递一个匿名函数。此外,Riyono认为您还应该通过
延迟

setTimeout(函数(){RotateImages(Start++,delay)},delay)


至于你的警报问题,我不知道该告诉你什么。但是我知道上面提到的会纠正一些问题。

你说的“像工作一样”是什么意思?你是说它真的可以工作,还是说你看到了警报,但它不能完全工作?起初我不理解你的解释,但后来我读了更多关于setTimeout的内容,有了更好的理解。我仍然不明白为什么在函数中传递参数会起作用,而您却希望它不会起作用。有什么想法吗?我想了解这一点,如果这将导致问题,请更正我的代码。谢谢
window.setTimeout("RotateImages(" + (Start+1) + ", " + delay + ")", delay);