所以我试着学习javascript - 仍然非常基础。
我正在做这样的事情
function add(amount) {
// number is 9
var number = parseInt($("#id").attr("number"));
number = number + amount;
}
这使得数字成为一个字符串 - 有没有什么方法可以'定义'东西所以它知道它的整数所以所有东西都没有在我所有函数的parseInts中泛滥?
答案 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;
}