除了将非法属性插入标记并使我的HTML无效之外,我以前从未做过我想做的事情,并且很可能会在我工作的其他方面从这个答案中受益。
我认为问题是我试图从字符串“$(this).attr('num')”中减去“1”
如果我首先将“$(this).attr('num')”转换为整数然后从中减去“1”,这可能会有效。
我对任何其他解决方案持开放态度。感谢
//
$("#jumpPreviousButton").click(function(){
var imageNumber = $(this).attr('num');
$("#bgImageBox").css({
"background-image": "url(/galleryImages/worksImage"
+ imageNumber - 1
+".jpg)"
}).attr('num', imageNumber - 1);
return false;}
);
//
答案 0 :(得分:5)
正如您所说,首先将其转换为整数将有所帮助。使用parseInt()
功能。 :)(如果是浮点数,则为parseFloat()
。)
答案 1 :(得分:4)
parseInt()函数解析字符串并返回一个整数。
签名为parseInt(string, radix)
所以问题的答案是:
var imageNumber = parseInt($(this).attr('num'), 10);
第二个参数强制parseInt使用基数为十的编号系统。
为什么呢? 如果$(this).attr('num')将为“08”,没有基数的parsInt将变为0
答案 2 :(得分:4)
为什么不使用jquery的data()
函数代替attr()
将num字段添加到代码中。
parseInt
例如: HTML:
<html>
<body>
<p>hello</p>
</body>
</html>
JS:
$('p').data('foo',52);
var val = $('p').data('foo');
alert(val);
$('p').data('foo', val + 1);
alert($('p').data('foo'));
这会提醒52
,然后53
。您可以看到演示here。
答案 3 :(得分:3)
(parseInt(imageNumber) - 1)
如果数字是整数。
答案 4 :(得分:3)
parseInt()函数是你的朋友;)
var imageNumber = parseInt($(this).attr('num'));