所以我尝试学习 javascript - 仍然很基础。
我在做这样的事情
function add(amount) {
// number is 9
var number = parseInt($("#id").attr("number"));
number = number + amount;
}
这使得数字成为一个字符串 - 有什么方法可以“定义”东西,所以它知道它是一个整数,所以所有函数都不会在 parseInts 中泛滥?
所以我尝试学习 javascript - 仍然很基础。
我在做这样的事情
function add(amount) {
// number is 9
var number = parseInt($("#id").attr("number"));
number = number + amount;
}
这使得数字成为一个字符串 - 有什么方法可以“定义”东西,所以它知道它是一个整数,所以所有函数都不会在 parseInts 中泛滥?
您只需要使用parseInt
一次:从有字符串的地方获取值时。之后它是一个数字,并且将保持一个数字(除非您将其转换回字符串)。
但是,始终指定 的第二个参数parseInt()
:
var number = parseInt($("#id").attr("number"), 10);
否则它将使用基数 8 或 16,具体取决于您通常不想要的前缀!
此外,HTML 没有number
属性。不要创建自定义属性!改为在您的 HTML 中使用data-number="9"
并使用.data('number')
. 它甚至具有 jQuery 自动猜测类型的优点,因此您根本不需要 parseInt。
如果该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
。
这是不在代码中到处调用的替代方法parseInt
:预处理您需要处理为整数的所有内容,并使用data
jquery 中的 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;
}