我有上面的代码:
var element1=$("#element1").val();
//the element1 value is 12.60
//html code for this element <input id="element1" value="12.60" />
element1=parseFloat(element1).toFixed(2);
var element2=$("#element2").text();
//the element2 value is 1.00
//html code for this element <span id="element2">1.00</span>
element2=parseFloat(element2).toFixed(2);
var addthem=element1+element2;
console.log(addthem);
当然我希望看到13.60
,但我得到12.601.00
(添加字符串)。
我错过了什么吗?
答案 0 :(得分:2)
使用Firebug进行快速检查,显示toFixed()方法在Firefox中返回一个字符串:
var f = 16.055;
console.log(typeof(f.toFixed(1)));
返回:string
因此,您应该将最后一行更改为:
var addthem = parseFloat(element1) + parseFloat(element2);
答案 1 :(得分:2)
parseFloat
工作正常,但是您明确地获取了值的字符串版本(通过toFixed
),因此+
连接字符串。仅在您要将数字转换为字符串的位置使用toFixed
(例如,输出到元素)。
答案 2 :(得分:2)
toFixed()
会返回一个String作为其数据类型。
您在+
中使用的var addthem=element1+element2;
运算符用作字符串连接,因为+
在JavaScript中重载。如果任何操作数是字符串,则返回字符串值。