我有这段代码:
wallboard.data.Timer = function () {
$("div[data-value]").each(function () {
var time = $(this).attr("data-value");
if (time > 0) {
time += 1000;
$(this).attr("data-value", time).text(TimeToText(time));
}
});
}
函数TimeToText()
只需要一毫秒的值并将其输出为hour:seconds (00:00)
。
属性data-value
包含毫秒值,并存储在变量time
中。
这是我的“调试”输出:
var time = $(this).attr("data-value");
时间= 4376
if (time > 0) {
为真,因为4376大于0
time += 1000;
在此“时间”之后是43761000 - 她开始连接文本“4376”和“1000”,这就是JavaScript引擎认为时间是字符串类型的证明。
如何明确时间应该是整数类型?
答案 0 :(得分:3)
var time = $(this).attr("data-value");
var timeInt = parseInt(time) + 1000;
答案 1 :(得分:1)
您需要将使用attr()
检索到的字符串转换为数字,例如
var time = +($(this).attr("data-value"));
答案 2 :(得分:1)
您可以通过一元+
使用强制,或者将其包含在基数为10的parseInt
中。
wallboard.data.Timer = function () {
$("div[data-value]").each(function () {
var time = parseInt($(this).attr("data-value"), 10);
if (time > 0) {
time += 1000;
$(this).attr("data-value", time).text(TimeToText(time));
}
});
}
此外,您可以搜索" javascript字符串到数字"你会发现数十亿的结果。
编辑:为什么不自动将数字字符串解释为数字?因为那将是一个非常不愉快的偏离惯例:在JS中你试图尽可能少地修改你的输出。如果你想要将两个数字字符串实际连接在一起,那么你必须做很多工作才能完成它:
而不是var a = "1000" + "10"
获取"100010"
,你必须做这样的事情
var a = ["1000", "zz10"].join(""); // note the "zz", so it's not plain numeric.
a = a.replace("zz", ""); // replace "zz" with nothing.
// now `a` would be "100010"
答案 3 :(得分:1)
在将字符串添加1000之前,应将字符串转换为整数。
var time = parseInt($(this).attr("data-value"));
答案 4 :(得分:0)
您可以使用一元加运算符将字符串属性值转换为数字(您也可以使用parseInt())
var time = +$(this).attr("data-value");