.toFixed()数字如果元素太大

时间:2017-05-29 17:51:49

标签: javascript jquery

在其帐户信息中心上向特定群组的用户显示唯一编号。此数字从数据库中获取并经常更改。这个数字不到10,000,000。

改变号码的最佳方式是什么?让我们说#34; 2,643,977"对于" 2.6M"如果元素的宽度开始切断文本,那么可以说100px可以显示2,643,977,但减少到50px它显示2.6M?

问题澄清

文本元素是百分比,因此较小的屏幕将剪切大数字。

  1. 有没有办法获取内部元素的文字大小?
  2. 在此内部文字宽度大于元素宽度时,缩短数字,为1,000 - 1k,1,000,000 - 1m ......

3 个答案:

答案 0 :(得分:1)

您可以使用如下所示的js函数来检查您的内容是否过宽,然后使用其他答案中提供的其中一项功能缩短它,如果是这样的话。

此函数接受要检查的文本,要在px中约束它的宽度,以及实际元素使用的css类(在空格分隔的字符串中)。它返回一个bool,指示文本是否适合。

function checkIfFits(text, width, classes) {
  var s = document.createElement("span");
  s.className = classes;
  s.innerHTML = text;
  if (parseInt(s.offsetWidth, 10) > width) return false;
  return true;
}

答案 1 :(得分:0)

这个怎么样:

n2Display = (n<1000000) ? n : (n/1000000).toFixed(1) + 'M';

我假设n是一个数字,而不是这里的字符串

答案 2 :(得分:0)

function shorten(n){
  var l=Math.floor(n.length/3-1);
  return n.slice(0,n.length-l*3)+["","k","M","B"][l];
}

alert(shorten("123456"));
alert(shorten("123456789123"));

请注意,这需要传递Int中的String。

它只是切断了3个数字的每个块,并用其缩写形式替换它:

123,456 => 123k
123,456,789 => 123M