Моя функция добавления тысяч через запятую не работает

#javascript

#javascript

Вопрос:

У меня есть функция, которая преобразует значение в значение с запятой в тысячи, и она работает с одной из моих других html-форм, но не с этой. Кто-нибудь видит проблему с моим кодом?

—javascript—

 function numberWithCommas(x) {
      return x.toString().replace(/B(?=(d{3}) (?!d))/g, ",");
  }
  function calcule2(){
  var i=0; for (i=0;i<= 29;i  ) {calcule();}}
  function calcule(){

  var C20 = Excel2Html.C20.value= parseFloat(Excel2Html.C19.value)*parseFloat(Excel2Html.E16.value)*4;
var C21 = Excel2Html.C21.value= parseFloat(Excel2Html.C20.value)*0.22;

Excel2Html.C20.value=(numberWithCommas(C20));
Excel2Html.C21.value=(numberWithCommas(C21));
  

—html—

 <input type="text" onchange="calcule2()" name="E16" value="100" size="5" style="background: #67823A; border: none; color: #ffffff;">
<input type="text" onchange="calcule2()" name="C20" value="196000" size="5" disabled="disabled">
<input type="text" onchange="calcule2()" name="C21" value="43120" size="5" disabled="disabled">
  

C20 возвращает — 196000
C21 возвращает — 43120

Однако это должно быть:

C20 = 196 000 C21 = 43 120

Комментарии:

1. ваша numberWithCommas функция, похоже, работает просто отлично

Ответ №1:

Уже существуют методы форматирования чисел так, как вы ищете.

Вы можете использовать toLocaleString()

 function numberWithCommas(value) {
    return Number(value).toLocaleString("en");
}

document.querySelector("#number").addEventListener("input", function() {
  console.log(numberWithCommas(this.value));
});  
 <input type="number" id="number" />