如何让JQuery返回有效的img src?

时间:2011-06-08 21:55:02

标签: javascript jquery

因此,我在div中拥有共享相同类的图像,并且一次选择其中一个图像用于该图像的单个视图。在这个单一视图中,我有箭头,我想用它来在图像之间循环。共享同一类的图像具有连续的alt值。

现在,我可以获取前面的alt值,并将单个视图中图像的src设置为该图像的源。但是,我似乎无法通过以下图像获得相同的效果。

    $("#leftButton").click(function(){
            var current= $('img[id="selected"]');
            var altVal=current.attr("alt").valueOf()-1;
            if(altVal>=0)
            {
                var next= $('img[alt='+altVal+']');
                current.attr("id", "");
                next.attr("id", "selected");
                $("#embiggenImage").attr("src", next.attr("src"));
            }
        }
    );

    $("#rightButton").click(function(){
            var gal=$('img[class="galleryImage"]');
            alert(gal.length);
            var current= $('img[id="selected"]');
            var altVal=current.attr("alt").valueOf()+1;
            if(altVal<gal.length)
            {
                alert("inside");
                var next= $('img[alt='+altVal+']');
                current.attr("id", "");
                next.attr("id", "selected");
                $("#embiggenImage").attr("src", next.attr("src"));
            }
        }
    );

正如您所看到的,更改源代码的代码完全相同,它可以很好地达到这两个警报,但返回一个空源。

编辑:似乎在leftButton点击功能中,alt正在递减,但在右键按钮单击功能中,当我尝试增加alt时,相反,它会追加'1',这样最终值altVal是'01'。这对我没有任何意义..

2 个答案:

答案 0 :(得分:3)

问题在于这两行之间的区别:

var altVal=current.attr("alt").valueOf()-1;
var altVal=current.attr("alt").valueOf()+1;

-只有一个含义:减去。如果您在字符串上调用它,它将在操作之前转换为数字。

+有两个含义:添加和连接。如果你用一个号码来呼叫它,它就会增加。如果你在一个字符串上调用它,它会连接起来。 attr会返回一个字符串(valueOf也是如此 - 我不确定这是什么意思),所以+1表示“将添加1添加到结尾字符串“。

您需要将值转换为数字。我会使用unary + operator

var altVal = +current.attr('alt') + 1;

答案 1 :(得分:0)

如果“alt”的rightButton点击事件中的最终值为“01”,请在添加之前尝试使用parseInt(),如下所示:

parseInt(current.attr("alt").valueOf())+1;