代码之家  ›  专栏  ›  技术社区  ›  rownage

我的html/jquery切换脚本有什么问题?

  •  0
  • rownage  · 技术社区  · 14 年前

    我在标题中的一个脚本中有这个函数(由烟花生成,它起作用):

    function MM_swapImage() { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments; 
    document.MM_sr=new Array;
       for(i=0;i<(a.length-2);i+=3)  
          if ((x=MM_findObj(a[i]))!=null){
             document.MM_sr[j++]=x; 
             if(!x.oSrc) 
                x.oSrc=x.src; 
                x.src=a[i+2];
          }
    }
    

    然后我有一张桌子,上面有一堆td和trs,包括这个:

       <td rowspan="2"><a href="javascript:;" onclick="MM_swapImage('slice1_s1','','images/slice1_s2.jpg',1);"><img name="slice1_s1" src="images/slice1_s1.jpg" width="146" height="87" border="0" id="slice1_s1" alt="" /></a></td>
    

    然后,在表格结束后,我把这个脚本:

    <script>
    $("img").toggle(function(){
       $(this).MM_swapImage('slice1_s1', '', 'slice1_s2.jpg', 1); 
    }, function(){
       $(this).MM_swapImage('slice1_s1', '', 'slice1_s1.jpg', 1); 
    });
    </script>
    

    这些表格和所有这些都是AdobeFireworks为Web分割东西的方式,所以这些都是生成的。

    下面是我想要发生的事情:当点击图片时,我想要它改变颜色(这是我准备好的第二张图片,slice1 s2.jpg)。当它再次被单击时,我希望它回到原始状态。当我测试这个的时候,什么都没有发生。有什么建议吗?

    3 回复  |  直到 14 年前
        1
  •  0
  •   David Hoerster    14 年前

    我相信费利克斯·克林的评论是正确的。我不能肯定地说,因为我看不到你正在使用的所有代码——但这是有意义的。我拿了你的代码,模拟了一个本地版本。我在哪里出错了 $(this).MM_swapImage 被调用,表示对象未定义。一旦我移除 $(this). ,我在 MM_swapImage (因为我没有所有的代码),但这表明了问题的根源。

    但我有一个问题就是为什么不使用jquery toggle 换出图像的方法?你可以这样做:

    $("img").toggle(function(){
        $(this).attr("src", "slice1_s2.jpg");
    }, function(){
        $(this).attr("src", "slice1_s1.jpg");
    });
    

    不确定你是否需要使用“斯瓦皮马”这个词。

    菲利克斯·克林应该得到正确的答案。我只是想用 切换 交换图像。

    希望这有帮助!

        2
  •  0
  •   andres descalzo    14 年前
    <script>
    $("img").toggle(function(){
       $(this).MM_swapImage('slice1_s1', '', 'images/slice1_s2.jpg', 1); 
    }, function(){
       $(this).MM_swapImage('slice1_s1', '', 'images/slice1_s1.jpg', 1); 
    });
    </script>
    

    你试过把你的路径或图像? “图像/”

        3
  •  0
  •   godheadatomic    14 年前

    需要注意的一点是,附加到a标记上的onclick事件将优先于后面的脚本;我认为不会基于此触发toggle()。尝试删除onclick事件,看看是否可以。

    推荐文章