所以我试着学习javascript -仍然很基础。
我正在做这样的事情
function add(amount) {
// number is 9
var number = parseInt($("#id").attr("number"));
number = number + amount;
}
这使得数字一个字符串-有什么办法我可以"定义"的东西,所以它知道它是一个整数,所以一切不会泛滥在parseint在我所有的函数?
如果amount
值是字符串,则将其添加到int
将产生连接的文本。
在添加amount
之前运行parseInt
或确保您为amount
传递int
值。
更新:添加前检查参数类型
function add(amount) {
// number is 9
var number = parseInt( $("#id").attr("number"), 10 );
number = number + (typeof amount === "number" ? amount : parseInt( amount, 10 ) );
}
…并且在使用parseInt
时一定要指定radix
参数。
您只需要使用parseInt
一次:当从您有字符串的地方获取值时。之后它就是一个数字,并且一直是一个数字(除非你把它转换回字符串)。
但是总是指定parseInt()
的第二个参数:
var number = parseInt($("#id").attr("number"), 10);
否则,它将使用基数8或16,这取决于前缀,这是你通常不想要的!
另外,HTML没有number
属性。不要创建自定义属性!在HTML中使用data-number="9"
,并使用.data('number')
访问它。它甚至还有一个优点,即jQuery会自动猜测类型,因此您根本不需要parseInt。
这里有一种不在代码中到处调用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;
}