-1

属性値の合計を取得しようとしています。値は金額のいずれかです。$29.99、またはテキスト文字列。sold.

次のコードを使用していますが、これは適切ではないと確信しています。の戻り値を取得しますNaN。これは、「数値ではない」ことを意味します。テキスト文字列、ドル記号、コンマ、または 3 つすべてを適切に削除していない可能性があると感じています。

適切な解決策を提供するための助けは大歓迎です。ありがとう。

var total = parseFloat($('span.buyoffer').attr('data-price').replace(/[A-Za-z$-]/g, ""));
4

3 に答える 3

0

http://jsfiddle.net/p324u/

var sum = 0;
$("span.buyoffer").each(function() {
  var price = +($(this).attr("data-price").replace(/[^\d\.]/g, ""));
  sum += price;
});
于 2012-10-17T12:04:57.427 に答える
0
var total;
$.each($('span.buyoffer'), function(i,v) {
    var val = $(v).attr('data-price');
    if ($.isNumeric(val)) {
        total = total + val
    }
});
//here you will have the total value
于 2012-10-17T11:59:26.997 に答える
0

parseFloat('')NaN を返します。最初に空の文字列を数値に変換する必要があります。最も簡単な方法は、それから減算0することです。

var total = parseFloat(($('span.buyoffer').attr('data-price').replace(/[A-Za-z$-]/g, "")) - 0);

@Rory McCrossan も正しいので、使用.data()が推奨されるため、次のようになります。

var total = parseFloat(($('span.buyoffer').data('price').replace(/[A-Za-z$-]/g, "")) - 0);

<span class="buyoffer">ただし、これは要素が 1 つしかない場合にのみ機能します。一致したすべての要素の合計を計算するには、それぞれを反復処理する必要があります。

var total = 0;
$('span.buyoffer').each(function(index, element) {
    total += $(element).data('price').replace(/[A-Za-z$-]/g, "") - 0;
});
于 2012-10-17T12:00:23.843 に答える