0

所以我尝试学习 javascript - 仍然很基础。

我在做这样的事情

function add(amount) {
      // number is 9
     var number = parseInt($("#id").attr("number"));

     number = number + amount;
}

这使得数字成为一个字符串 - 有什么方法可以“定义”东西,所以它知道它是一个整数,所以所有函数都不会在 parseInts 中泛滥?

4

3 回答 3

4

您只需要使用parseInt一次:从有字符串的地方获取值时。之后它是一个数字,并且将保持一个数字(除非您将其转换回字符串)。

但是,始终指定 的第二个参数parseInt()

var number = parseInt($("#id").attr("number"), 10);

否则它将使用基数 8 或 16,具体取决于您通常不想要的前缀!

此外,HTML 没有number属性。不要创建自定义属性!改为在您的 HTML 中使用data-number="9"并使用.data('number'). 它甚至具有 jQuery 自动猜测类型的优点,因此您根本不需要 parseInt。

于 2013-05-23T19:17:00.633 回答
4

如果该amount值是一个字符串,则将其添加到 anint将导致连接文本。

parseInt在添加之前运行amount或确保您传递int.amount

更新:在添加之前检查参数类型:

function add(amount) {
    // number is 9
    var number = parseInt( $("#id").attr("number"), 10 );
    number = number + (typeof amount === "number" ? amount : parseInt( amount, 10 ) );
}

...并确保radix在使用时指定参数parseInt

于 2013-05-23T19:18:50.053 回答
0

这是不在代码中到处调用的替代方法parseInt:预处理您需要处理为整数的所有内容,并使用datajquery 中的 api(伪代码)保存它们:

$('.ints').each(function() { $(this).data("int", parseInt($(this).data("number"))); });

因此,您的代码将变为:

function add(amount) {
      // number is 9
     var number = parseInt($("#id").data("int"));
     number = number + amount;
}
于 2013-05-23T19:29:24.220 回答