-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
$('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;
});​

现场演示

您还可以使用 jQuerydata函数保存初始值:

    ...
    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 回答
3

如果你不擅长 Javascript 并且擅长 PHP,那就在服务器端做,或者:

a)将原始值存储在javascript var中
b)将值存储在隐藏的html元素中或:(imo最佳解决方案)
c)将原始值存储为data相应元素的-attribute。然后你可以像这样检索它:$("your-element").data("original-value")

只需显示您的 php 代码,我们就会找到一个解决方案来使其工作。

于 2012-06-09T21:22:32.870 回答
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 回答