【问题标题】:Coding html to display numbers so they are thousand separated编码 html 以显示数字,以便它们以千位分隔
【发布时间】:2016-11-25 15:49:45
【问题描述】:

我整天都在尝试,但似乎没有任何效果。

我希望我的网站做的是,我在代码的表格单元格中输入一个值,显示的结果将是相同的值,但千位分隔。这些值是严格的数字,但在页面上并非所有内容都是数字。

我尝试了几十种不同的 javascript 代码都无济于事,我开始放弃希望。我查看了我的代码,似乎没有什么相互矛盾的,那可能是什么问题?这真的是一项艰巨的任务吗?

非常感谢您提供的任何意见以及花时间与我一起解决这个问题!我渴望提供您可能需要的任何信息,以便更好地了解情况!

【问题讨论】:

标签: javascript html-table


【解决方案1】:

使用toLocaleString

let numb=5934859384;
numb.toLocaleString('pl-PL')

toFixed

let numb=82384.23456;
console.log(numb.toFixed(2));

或创建类似的函数:

function addDots(numb,position){
  let str=numb.toString().trim();
  let arr=str.split('');
  let result='';
  let index=0;
  for(let i=arr.length-1;i>=0;i--){
    index++;
    let nr=arr[i];
    result=nr+result;
    if(index == position){
        result='.'+result;
      index=0;
    }
  }
  let firstIsDot=result.substr(0,1);
  if(firstIsDot=='.'){
    result=result.substr(1);
  }
  return result;
}

let numb=3484762347;
console.log(addDots(numb,4)); // 34.8476.2347

如果要替换表格中的数字:

function replaceTableNumbers(){
    let tds=$('td');
  for(let i=0;i<tds.length;i++){
    let td=tds[i];
    let txt=$(td).text().trim();
    if(txt.match(/^[0-9]+$/)!=null){
        let parsed=addDots(txt,3);
        $(td).text(parsed);
    }
  }
}

$(document).ready(function(){
  replaceTableNumbers();
})

【讨论】:

  • 我刚刚将它添加到我的 javascript 中,但它没有做任何事情。最后的“ // 34.8476.2347”部分到底是什么意思?这只是它应该如何工作的一个例子吗?我是否需要添加代码中的特定数字,并希望在页面上显示特定的千位分隔符?
  • 啊,我现在明白了……你看,我需要的不是输入框。我不打算在我的网站上放一个。我希望网页显示我在表格单元格本身中编写的代码,以千位分隔。所以不会有用户可以写的框,我只希望我自己的内容以这种方式显示。没有输入框。只是带有数字的表格,千位分隔。
  • 噢噢噢!现在看起来真的很好!我要!
  • your sitereplaceTableNumbers
  • 如果这是您要寻找的,请接受此 cmets 上方的答案,谢谢
【解决方案2】:

这个解决方案有效吗?

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

取自:How to print a number with commas as thousands separators in JavaScript

【讨论】:

  • 我以前检查过这个主题,它有很多看起来不错的解决方案,但没有一个对我有用。现在再次尝试,仍然没有,老实说,我不知道可能是什么问题。将此添加到我的 javascript 的末尾,保存,打开页面,什么都没有。在这一点上它超出了我的范围,我只是不明白为什么它不起作用!
  • 我认为你必须在某些情况下调用上述函数,例如当文档检测到文本框发生更改时。
【解决方案3】:

你的意思是this answer?

$('input.number').keyup(function(event) {

  // skip for arrow keys
  if(event.which >= 37 && event.which <= 40) return;

  // format number
  $(this).val(function(index, value) {
    return value
    .replace(/\D/g, "")
    .replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  });
});

【讨论】:

  • 我已经检查过了,这个答案是为输入框提供的,但我要试试。我是否需要添加一个容器,例如一个带有“数字”类的分区才能工作?因为我刚刚测试过它,它似乎对我没有任何作用。
  • 自然! jsfiddle.net/zhxe0x34/1 基本上就是这样。如果有点过分,我可以理解。也对语言感到抱歉,如果可以,请忽略!有问题的领域将是“Ár”类别下列出的元素。我希望那些以千分之差显示。
  • 硬币数据如何填充?我看到的只是很多引导插件。
  • 导航中显示在文本旁边的硬币部分在悬停图像跨度部分用 css 编码,部分用 html 编码,表中的硬币是 html-only,如果这就是你的意思.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2017-01-25
相关资源
最近更新 更多