因此,我在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'。这对我没有任何意义..
答案 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;