代码如下,为什么只能循环一张图片,想实现的效果是点击图片显示下一张图片,l=arr.length已读出是5,但是只往下循环显示一条,菜鸟对代码不熟,求赐教
<%if rs("img")<>"" then
  img=rs("img") 
          myimg=Split(img,"|")
  arrnum=Ubound(myimg) 
  s= join(myimg,",")
%>
<SCRIPT LANGUAGE=javascript>
function changeimg(obj,src){
  var str='<%=s%>',arr=str.split(",")
  var l=arr.length
  for(var i=0;i<=l-1;i++){
  obj.src=arr[i]
  }
}
</SCRIPT>
<img id="img" src="..<%=myimg(0)%>" onclick=changeimg(this,this.src) />
          <%end if %>

解决方案 »

  1.   

    var str='<%=s%>',arr=str.split(",")
    alert(str);看看是啥
      

  2.   

    function changeimg(obj,src){
      var str='<%=s%>',arr=str.split(",");
      var l=arr.length;
      var nextIdx = -1;
      for(var i=0;i<l;i++){
        if(src == arr[i]){
          nextIdx = i + 1;
        }
        if(nextIdx == i){
          obj.src=arr[i]
        }
      }
      if (nextIdx == l){
        alert("sorry,this is the last image.");
      }
    }
      

  3.   

    <SCRIPT LANGUAGE=javascript>
    var i=0;
    function changeimg(obj,src){
      var str='<%=s%>',arr=str.split(",")
      var l=arr.length
      if(i<=0||i>=l){
         i=0;
      }
      obj.src=arr[i];
    }
    </SCRIPT>
      

  4.   

    回1楼,alert(str)就是asp中读取的数据库中的图片路径用“,”分隔开的,alert(arr)是去掉逗号的,都是对的
    回2楼,没明白,对javascript只是初偿,还没什么深入了解,什么叫有个全局的i,i++不就是往下循环吗
      

  5.   

    不行,上面两位的代码试了一下,图片不动啊还有for的那个地方,两个都没怎么看明白
    回shuixiya1999,唉,我知道我菜,这个做法肯定有问题,不然不就实现了,但是到底带怎么做呢,几乎完全没学过javascript,这个方法也是看了一晚上的javascript加上别人的例子才好不容易掰出来的
      

  6.   


    function changeimg(obj,src){
      var str='<%=s%>',arr=str.split(",")
      var l=arr.length
      for(var i=0;i<=l-1;i++){
      obj.src=arr[i]
      }
    }首先你得确定str.split(",")得到的arr是有东西的.不然没法循环。另外,你使用for循环控制点击按钮显示下一张是不行的,你这样写得到的永远是arr最后的长度值(假设arr.length长度为5,得到的arr[i]=arr[5]).这样做点击显示下一张是不合理的!
      

  7.   

    你可以使用这种方式:<img id="img" src="..<%=myimg(0)%>" onclick=changeimg(this,this.src) />
    function changeimg(a,b,src){
    var str='<%=s%>';
    var arr=str.split(",");
    var OnclickNum=0;
    if(OnclickNum==arr.length)
     OnclickNum=0;
    obj.src=arr[OnclickNum++%arr.length];}这样就能重复,但你得保证arr不是空数组,还有obj是img元素,也就是var obj=document.getElementId("img");
      

  8.   

    var OnclickNum=0;
    function changeimg(a,b,src){
    var str='<%=s%>';
    var arr=str.split(",");
    if(OnclickNum==arr.length)
     OnclickNum=0;
    obj.src=arr[OnclickNum++%arr.length];}OnclickNum应该写在函数外面,楼上的代码敲快了,没考虑到哈!
      

  9.   

    obj.src=arr[i]
    这里,你只给了它一个图片地址嘛。下次点击的时候也只是一个图片地址呀
      

  10.   

    回楼上几位,还是不行按koo42636880老兄的方法,和上面两位的代码一样,图片不变,arr里获取的东西是正确的,alert过正是想要获取的路径,length值为5,为防止下标越界,for的时候l-1,点击循环一次,的确是只能循环一次,但是不是最后一张,而是第4张图,也就是倒数第二张,这点也想不明白,按理好像应该是最后一张百思不得其解,代码又不熟,只好步步alert,发现在for大括号内alert(i)和alert(arr[i]),会依次顺序显示,也就是这个时候是对的,只不过点击更换图片的时候会一次次弹出alert框,不知道这个是个什么现象,感觉好像少了什么触发似的,通过alert下面获取的就是正确的值了,如果没有弹出框就是我想要的效果了
      

  11.   


    <body>
        <form id="form1" runat="server">
        <div id="text" class="text">
        <img id="img" src="image/001.jpg" onclick="clickImg(this);" />
        </div>
        </form>
    </body>
     var Num=0;
       function clickImg(obj){
       var arr=["image/001.jpg","image/002.jpg","image/003.jpg","image/004.jpg"];
       if(Num==arr.length)
       Num=0;
       obj.src=arr[Num++%arr.length];
       
       }我这样已经测试通过,无限重复循环..你试着看看你错在哪里!
      

  12.   

    对的对的,刚才检查了一下,onclick居然拼错了,按你说的提确是达到效果了,不过不知道为什么第一次要点击两下才开始更换,是img初始值的问题吗,不过看到图在变真心激动啊,真是万分感谢,虽然还不太明白你改的那几句具体的区别在哪,不过我会好好研究学习的,真是学了不少东西,再次感谢!
    同时感谢楼上的几位
      

  13.   

    因为你第一次点击onclick的时候arr[Num++%arr.length]=arr[0];所以src还是为image/001.jpg,因为arr[0]第一个索引也为"image/001.jpg".
      

  14.   


    是的,发现了,所以把num初始改成1了,刚好就往下移一个,谢谢,学到不少,继续研究