【问题标题】:how to preform subtraction on a string如何对字符串执行减法
【发布时间】:2011-01-30 10:34:26
【问题描述】:

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

//

【问题讨论】:

  • 如果您不想从 int 进行转换,请查看下面我使用 jquery 的数据方法的答案

标签: jquery string subtraction


【解决方案1】:

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

【讨论】:

  • 感谢您抽出时间 Golez。我会记住 parseFloat() 以供将来参考
【解决方案2】:

使用 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

【讨论】:

  • 哇。看起来很奇怪,它会像 O_o 那样默认为八进制,但是有时候编程语言的很多事情对我来说似乎很奇怪。
  • classc java 和 javascript 和 octal-systems-heritage 的东西......相信我,10 年前我在这个问题上花了 4 天时间,当时这被认为是一个错误,而不是一个功能...... .
【解决方案3】:

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

  1. Jquery 的数据不会使你的标记失效
  2. data中可以添加任意数据类型,所以不用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

【讨论】:

  • 好的,这真的很有趣。使用 attr 可以让我看到 HTML 中的数字。 data() 在哪里存储信息?
  • 在 javascript 对象上,因此不会使您的 html 无效
【解决方案4】:
(parseInt(imageNumber) - 1)

如果数字是整数。

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

    • 谢谢马雷克。我确信这有一些功能,但只是不确定是什么,因为我是 Javascript 和 Jquery 的新手
    猜你喜欢
    • 2018-03-12
    • 1970-01-01
    • 2012-07-29
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多