我有问题计算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我的意思是我需要它来计算两个数字,如果他们有逗号任何帮助?
答案 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 强>
在将字符串解析为整数之前,您需要删除逗号。