可以使用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
但我还需要保留实际数字,并只显示转换后的数字 我仍然需要访问未转换的号码。
答案 0 :(得分: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;
});
您还可以使用jQuery data
函数保存初始值:
...
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;
});
答案 1 :(得分:3)
如果你厌倦了Javascript并且擅长PHP,那就去服务器端,然后:
a)将原始值存储在javascript var中
b)将值存储在隐藏的html元素中OR :( imo best solution)
c)将原始值存储为data
- 相应元素的属性。然后,您可以像这样检索它:$("your-element").data("original-value")
只需显示您的php代码,我们就会找到一个可以使其正常工作的解决方案。
答案 2 :(得分: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;
// ...
}