如何在字符串上执行减法

时间:2011-01-30 10:34:27

标签: jquery string subtraction

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

//

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

使用parseInt但不使用没有radix

的parseInt

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

签名为parseInt(string, radix)

所以问题的答案是:

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

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

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

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

答案 2 :(得分:4)

为什么不使用jquery的data()函数代替attr()将num字段添加到代码中。

  1. Jquery的数据不会使您的标记无效
  2. 您可以在数据中添加任何数据类型,因此无需使用parseInt
  3. 例如: 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'));