1

除了将非法属性插入标签并使我的 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;}
);

//
4

5 回答 5

5

正如您所说,首先将其转换为整数会有所帮助。使用该parseInt()功能。:) (或者parseFloat()如果它是一个浮点数。)

于 2011-01-30T10:38:02.073 回答
4

使用 parseInt 但不要使用没有基数的 parseInt

parseInt() 函数解析一个字符串并返回一个整数。

签名是parseInt(string, radix)

所以你的问题的答案是:

  var imageNumber = parseInt($(this).attr('num'), 10);

第二个参数强制 parseInt 使用以十为底的编号系统。

  • ParseInt() 的默认输入类型是十进制(以 10 为底)。
  • 如果数字以“0”开头,则假定为八进制(以 8 为基数)。
  • 如果以“0x”开头,则假定为十六进制

为什么?如果 $(this).attr('num') 将是“08”,则没有基数的 parsInt 将变为 0

于 2011-01-30T10:50:21.140 回答
4

为什么不使用 jquery 的data()函数而不是attr()将 num 字段添加到标签中。

  1. Jquery 的数据不会使您的标记无效
  2. 你可以在数据中添加任何数据类型,所以不需要使用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你可以在这里看到一个演示。

于 2011-01-30T11:02:51.903 回答
3
(parseInt(imageNumber) - 1)

如果数字是整数。

于 2011-01-30T10:37:22.033 回答
3

parseInt() 函数是你的朋友;)

var imageNumber = parseInt($(this).attr('num')); 
于 2011-01-30T10:38:03.857 回答