-1

これは次の方法で実行できますかjavascript/jQuery:

<div class="number">99,123,123</div>
<div class="number">123,123,123</div>
<div class="number">1,123,123,123</div>
<div class="number">1,123,123,123,123</div>

として表示するには

99,123,123 // (only start converting after > 8 total digits)
123M // M stands of million
1B
1T

ただし、実際の数値を保持し、変換された数値のみを表示する必要もあります。
変換されていない番号にアクセスする必要があります。

4

3 に答える 3

3

Javascriptが苦手でPHPが得意な場合は、サーバー側で次のいずれかを実行してください。

a) 元の値を javascript var に
保存する b) 値を非表示の html 要素に保存する OR: (imo の最良の解決策)
c) 元の値をdata対応する要素の -attribute として保存します。次に、次のように取得できます。$("your-element").data("original-value")

あなたのphpコードを表示するだけで、それを機能させるための解決策が見つかります.

于 2012-06-09T21:22:32.870 に答える
3
$('div.number').each(function(){
    var num = this.innerHTML.replace(/\D/g, "");
    var result;

    if (num.length < 9)
        return true;
    else if (num.length == 9)
        result = num.substr(0, 3) + 'M';
    else if (num.length > 9 && num.length < 12)   
        result = num.substr(0, num.length - 9) + 'B';
    else if (num.length > 12 && num.length < 15)   
        result = num.substr(0, num.length - 12) + 'T';

    this.innerHTML = '<span class="hidden">' + this.innerHTML + '</span>' + result;
});​

ライブデモ

datajQuery関数を使用して初期値を保存することもできます。

    ...
    else if (num.length > 12 && num.length < 15)   
        result = num.substr(0, num.length - 12) + 'T';

    $(this).data('previous-value', this.innerHTML);
    this.innerHTML = result;
});

ライブデモ

于 2012-06-09T21:21:53.510 に答える
0

これが私がそれを行う方法です:

var numbers = $('.number').map(function() {
  return $(this).text().replace(',', '');
});

for (i in numbers) {
  var number = parseInt(numbers[i], 10);
  var number_of_digits = numbers[i].length;

  // ...
}
于 2012-06-09T21:22:14.440 に答える