0

jqueryまたはjavascriptで2つの数値の計算に問題があります

div "attr" から 1 番目と 2 番目の数値を取得します

これは私のコード例です

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を返す方法は、コンマがあれば2つの数値を計算する必要があるということです。

4

5 に答える 5

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);

}

于 2012-09-12T19:56:23.077 に答える
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;
}
于 2012-09-12T19:50:28.847 に答える
0

文字列を数値に変換する必要があります。

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

ただし、単なる文字列である無効な属性を使用する代わりにdata-price="5000"、HTML で使用することを検討してください。次に、次のコードは正常に機能します。

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

ああ、価格に千単位の区切り記号を入れないでください。それらはデータにまったく属しません。それはディスプレイのことです。それらを取り除くことができない場合は、どちらの場合も int に変換する必要がありますが、最初にそれらを削除します ( .replace(/,/g, ''))

于 2012-09-12T19:48:28.687 に答える
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) );

正規表現を変更して、有効な数値 (数字と小数点以下の桁数) のみを保持し、残りを削除しました。これらは価格であるため、負の数が問題になるはずです。

于 2012-09-12T19:50:37.933 に答える
0

試す:

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

jsFiddle の例

文字列を整数に解析する前に、コンマを取り除く必要があります。

于 2012-09-12T19:52:40.563 に答える