在jQuery中计算两个数字

时间:2012-09-12 19:46:18

标签: jquery

我有问题计算2个数字在jquery或javascript中有逗号

我从div“attr”获取第一个和第二个数字

这是我的示例代码

var firstnumber = $('.first_price').attr('price'); //its 5,000
var secondnumber = $('.second_price').attr('price'); //its 6,000

$('#total').html( Math.floor(firstnumber+secondnumber) );

//also tried
$('#total').html( Number(firstnumber+secondnumber) );

它返回0,但是当我从价格中删除逗号时,它会重新生成11000 如何让它返回11,000我的意思是我需要它来计算两个数字,如果他们有逗号任何帮助?

5 个答案:

答案 0 :(得分:1)

您必须删除逗号,然后重新应用逗号

var firstnumber = $('.first_price').data('price');
var secondnumber = $('.second_price').data('price');
firstnumber  = firstnumber.replace(/,/g , '');
secondnumber = secondnumber.replace(/,/g , '');
var result = addCommas(firstnumber+secondnumber);

中添加逗号的功能
function addCommas(nStr){
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}

答案 1 :(得分:1)

以下是答案:

var firstnumber = $('.first_price').data('price').replace( /[\$,]/g, '' ) ; 
var secondnumber = $('.second_price').data('price').replace( /[\$,]/g, '' ) ;
var total = Math.floor(firstnumber+secondnumber)
$('#total').html( formatCurrency(total)  );


function formatCurrency( amount ) {
amount = ('' + amount).replace( /[$,]/g, '' );
if( isNaN( amount ))
    amount = '0';

var cents = Math.round( amount * 100 ); // Total number of cents
amount = Math.abs( amount > 0 ? Math.floor(amount) : Math.ceil(amount) ) + ''; // Number of complete dollars

for( var i = 0; i < Math.floor( (amount.length - ( 1 + i )) / 3 ); i++ )
    amount = [amount.substring( 0, amount.length - ( 4 * i + 3 ) ), amount.substring( amount.length - ( 4 * i + 3 ))].join(',');

return (cents >= 0 ? '' : '-') + amount + '.' + (Math.abs(cents) % 100).zeroFill(2);

}

答案 2 :(得分:0)

您需要将字符串转换为数字:

var firstnumber = +$('.first_price').attr('price');
var secondnumber = +$('.second_price').attr('price');

但是,考虑在HTML中使用data-price="5000",不要使用只是普通字符串的无效属性;那么以下代码将正常工作:

var firstnumber = $('.first_price').data('price');
var secondnumber = $('.second_price').data('price');

哦,不要把那些数千个分隔符放在你的价格中。它们根本不属于数据;这是一个显示的东西。如果你无法摆脱它们,你需要在两种情况下转换为int,但首先删除它们(.replace(/,/g, '')

答案 3 :(得分:0)

这是因为它还不是一个数字,它是一个字符串,删除逗号

var firstnumber = $('.first_price').attr('price').replace(/[^\d.]/g,''); //its 5,000
var secondnumber = $('.second_price').attr('price').replace(/[^\d.]/g,''); //its 6,000

$('#total').html( Math.floor(firstnumber+secondnumber) );

我将正则表达式更改为仅保留有效数字值(数字和小数位)并删除其余部分。由于这些是价格,负数应该是一个问题。

答案 4 :(得分:0)

尝试:

$('#total').html(  Math.floor(parseInt(firstnumber.replace(',',''),10)+parseInt(secondnumber.replace(',',''),10)) ));

<强> jsFiddle example

在将字符串解析为整数之前,您需要删除逗号。