for循环在javascript中不起作用?

for循环在javascript中不起作用?,javascript,Javascript,仅在浏览器帮助中打开最后一个图像时显示它为什么循环不工作 var i=0; function set() { for(i=1; i<=5; i++) { var image = "<img src=images/sl" + i + ".jpg"+" width='500' height='300' style='margin-left:400px;' />"; document.getElementById("slider

仅在浏览器帮助中打开最后一个图像时显示它为什么循环不工作

var i=0;
function set()
{
    for(i=1; i<=5; i++)
    {
        var image = "<img src=images/sl" + i + ".jpg"+"  width='500' height='300' style='margin-left:400px;' />";   
        document.getElementById("slider").innerHTML = image;        
    }
}
setInterval("set()","600");

        <div id="slider">   
            <img src="images/sl1.jpg" />
        </div>
var i=0;
函数集()
{

对于(i=1;i,您必须附加到
innerHTML
,而不仅仅是设置它

var slider =document.getElementById("slider");
slider.innerHTML = slider.innerHTML + image;
  • 每次更改DOM时,浏览器都必须重新呈现页面。为了获得更好的性能,只需将新的html存储在临时变量中一次即可

  • setInterval的第一个参数应该是函数名,而不是字符串

  • var i=0;
    函数集()
    {
    var new_html='';
    
    对于(i=1;i也许这就是你想要的

    function setImage(i) {
        var image = "<img src=images/sl" + i + ".jpg" + "  width='500' height='300' style='margin-left:400px;' />";
        document.getElementById("slider").innerHTML = image;
    }
    
    function loopImages(i) {
        setImage(i);    //    set current Image
    
        if (i == 5) {    
          i = 1;    //  reset the counter
        }
    
        setTimeout(function () {
            loopImages(i++);
        }, "600");    //    set next image in 600 ms
    
    }
    
    loopImages(1);
    
    函数setImage(i){
    var image=“”;
    document.getElementById(“slider”).innerHTML=image;
    }
    功能图像(一){
    setImage(i);//设置当前图像
    如果(i==5){
    i=1;//重置计数器
    }
    setTimeout(函数(){
    loopImages(i++);
    },“600”);//在600毫秒内设置下一个图像
    }
    循环图像(1);
    

    不知道是想让它在图像5上停止还是永远循环…

    是什么让你认为循环不起作用?不起作用永远不是一个好的描述不是一个解决方案,但不要将字符串传递给
    setInterval
    。is使用
    eval
    !传递函数。
    setInterval(set,600)
    。那么,你到底想做什么?为什么有一个循环?为什么
    setInterval
    还有!你需要在每次
    set
    调用开始时清除innerHTML!@DanielA.White:不太可能。我测试过,Opera说它们都一样。Chrome说它快了1%。但是为什么每600毫秒运行一次相同的函数,做完全相同的事情?你确定这就是OP想要代码做的吗?我不知道是什么我觉得整个问题是一个X-Y问题。间隔延迟实际上是一个数字,而不是一个字符串。我也错过了。接得好。
    function setImage(i) {
        var image = "<img src=images/sl" + i + ".jpg" + "  width='500' height='300' style='margin-left:400px;' />";
        document.getElementById("slider").innerHTML = image;
    }
    
    function loopImages(i) {
        setImage(i);    //    set current Image
    
        if (i == 5) {    
          i = 1;    //  reset the counter
        }
    
        setTimeout(function () {
            loopImages(i++);
        }, "600");    //    set next image in 600 ms
    
    }
    
    loopImages(1);