我写了一段代码,可是它并不执行,不知道错在哪
              //图片循环显示
function tim(){
var im1=document.getElementById("imag").getElementsByTagName("img");
            for(i=0;i<im1.length;i++)
{
var im11=im1[i];
//im1.style.display="block";
setTimeout("function(){im11.style.display="block";}",3000);
}
}html代码:
<div id="imag"><img src="image/01.jpg" id="dv1"/>
<img src="image/02.jpg" id="dv2" style="display:none"/>
<img src="image/03.jpg" id="dv3" style="display:none"/>
<img src="image/04.jpg" id="dv4" style="display:none" /> </div>

解决方案 »

  1.   

    闭包了...im11 = im1[i];程序执行后,i == im1.length;所以每个匿名函数内的im11都等于im1[im1.length];
      

  2.   

    首先有语法错误。更正语法后再来谈功能吧。
    setTimeout()的第一个参数,要么直接传一个function不加引号,要么传一个字符串。字符串内部注意引号转义。
      

  3.   

    setTimeout如果是函数不要加双引号,否则就成字符串了,当语句执行了。
    另外逻辑也很混乱,都三秒钟后显示?setTimeout不会堵塞的。参考如下代码:
    <html>
    <body>
    <div id="imag">
    <img src="http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/1.gif" id="dv1"/>
    <img src="http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/2.gif" id="dv2" style="display:none"/>
    <img src="http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif" id="dv3" style="display:none"/>
    <img src="http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/4.gif" id="dv4" style="display:none" />
    </div>
    <script>
    (function() {
    var images = document.getElementById("imag").getElementsByTagName("img");
    var index = 1, lastIndex = 0;
    setInterval(function() {
    images[lastIndex].style.display = "none";
    images[index].style.display = "block";
    lastIndex = index;
    index = (index + 1) % images.length;
    }, 3000);
    })();
    </script>
    </body>
    </html>注意排版和命名,要养成良好的编程习惯,美观整洁即可读性很重要代码是给人看的。