parseInt和vars就像字符串一样

时间:2013-05-23 19:15:43

标签: javascript jquery

所以我试着学习javascript - 仍然非常基础。

我正在做这样的事情

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

     number = number + amount;
}

这使得数字成为一个字符串 - 有没有什么方法可以'定义'东西所以它知道它的整数所以所有东西都没有在我所有函数的parseInts中泛滥?

3 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:4)

如果amount值是一个字符串,那么将其添加到int将导致连接文本。

在添加之前在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参数。

答案 2 :(得分:0)

以下是在代码中不调用parseInt的替代方法:预处理需要处理的所有内容并使用来自jquery(伪代码)的data 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;
}