字符串INT(数字)

问题描述:

可能重复:
How do I Convert a String into an Integer in JavaScript?字符串INT(数字)

我有以下代码:

$.ajax({ 
     type: "GET", 
     url: 'index.php?act=ajax&op=getShippingPrice&id='+shippingID, 
     success: function(data) { 
     var currentPrice = Number($("#finalPrice").html()); 
     var newPrice = Number(currentPrice + data); 
     $("#finalPrice").html(newPrice); 
     } 
    }); 

我尝试计算新价格。但我实际上得到了一个包含当前价格的newPrice字符串,并紧接着来自ajax的数据。

如果目前的价格为1500,并从阿贾克斯的数据是10,我所得到的是150010,而不是1510

我还试图用parseInt函数,可能没有使用它的权利。

+0

将每个字符串包装在parseInt中 – mplungjan

+0

是的,它很可能是'$('#finalPrice').html()'输出一个字符串,而不是一个int,使用'parseInt'会将字符串转换为一个整数,而不是'+'操作符'连接'一个字符串,它会'添加'到整数。 – Ohgodwhy

+0

如果要执行加法,两个操作数都需要是数字。 –

使用此:

假设带有小数价格,使用parseFloat,如果没有,用parseInt

$.ajax({ 
    type: "GET", 
    url: 'index.php?act=ajax&op=getShippingPrice&id='+shippingID, 
    success: function(data) { 
    var currentPrice = parseFloat($("#finalPrice").html()); 
    var newPrice = currentPrice + parseFloat(data)); 
    $("#finalPrice").html(newPrice.toFixed(2)); 
    } 
}); 
+0

现在一个toFixed,我们在那里 – mplungjan

+0

@mplungjan谢谢,更新... – ATOzTOA

+0

@mplungjan恕我直言,你自己对OP的要求做了太多的假设。他说他尝试过'parseInt',所以期望字段实际上是整数是合理的,在这一点上使用'parseFloat'和'toFixed'是不合适的。 – Alnitak

不喜欢它:

var newPrice = parseInt(currentPrice) + parseInt(data); 

这将帮助您:

var newPrice = 1*currentPrice + 1*data; 

乘以1不改变结果,但它会改变变量的类型。

+0

有内置功能来做到这一点! – mplungjan

+0

是的,但没有理由采取佳能关闭麻雀:) – bumerang

+0

而你甚至不需要'数字'功能之后。 – bumerang

首先将您的HTML派生值转换为数字(并确保您提供radix参数以应对前导零)。

你也应该去除可能存在的任何空白:

data = parseInt(data, 10); 

var currentPrice = parseInt($.trim($("#finalPrice").html()), 10); 
var newPrice = currentPrice + data; 

如果来自服务器的输出不是JSON格式,那么你也应该加入之前过于转换data

最后,如果你的号码实际上不是整数,使用的parseFloat代替parseInt

+0

数据肯定是一个字符串 – mplungjan

+0

@mplungjan如果响应是JSON的话--OP没有说。 – Alnitak

+0

我永远不会相信它是数字的 – mplungjan

尝试MODI fying像这样的:

$阿贾克斯({ 类型: “GET”, 网址: 'index.php的行为= ajax的& OP = getShippingPrice & ID =' + shippingID, 成功:功能(数据) {

var newPrice = Number(currentPrice + Number($("#finalPrice").html())); 
    $("#finalPrice").html(newPrice); 
    } 
}); 

至少你会得到错误。

+0

为什么在数字中包装数字? – mplungjan