2016-04-28 101 views
0

我創建了一個函數,它以英制單位的數字輸入到一個div中,並將該值轉換爲另一個div的公制單位。對於js來說相對較新,我現在意識到千分之一的逗號分隔符並不標準。我試圖應用許多解決方案(其中許多是reg ex),但是沒有一個適合我的需求或已經工作。簡而言之,我只是希望兩個div輸出的數字都以逗號分隔千分之一。最終,這些數字是以英尺和米表示的高程值。任何有識之士將不勝感激......謝謝!在千分位輸入數字中插入一個逗號

這裏是我的代碼:

<body> 

<div id="feet" onload="calculateMeter()">2120</div> 
<div id="meter"></div> 

<script> 
var feet = document.getElementById('feet'); 
var meter = document.getElementById('meter'); 

function calculateMeter() { 
    if (feet.innerHTML > 0) { 
     meter.innerHTML = (feet.innerHTML * 0.3048).toFixed(1); 
     feet.toString(); 
     feet = feet.innerHTML.replace(/(\d)(\d{3})\,/, "$1,$2."); 
    } 
} 
calculateMeter(); 


</script>       
</body> 
+1

有[所謂國際新的DOM API(https://開頭開發商。 mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat)根據用戶區域設置格式化數字和其他東西,它可能會幫助您 – aarosil

+0

就像我說的,我研究了很多解決方案,這一個包括在內,無濟於事。請幫忙。 –

+0

問題似乎是你不知道如何更新HTML的內容? 'feet.toString();'的目的是什麼?你爲什麼分配到'腳'?你想要'feet.innerHTML = feet.innerHTML.replace(...)'而不是? –

回答

0

下面是一個簡單的正則表達式的解決方案

function calculateMeter() { 
    if (feet.innerHTML > 0) { 
     var m = (feet.innerHTML * 0.3048).toFixed(2); 
     meter.innerHTML = m.replace(/\B(?=(\d\d\d)+\b)/g, ","); 
    } 
} 
+1

好的!這工作,非常感謝!我甚至把你的代碼加入了一些新的代碼,並且把逗號加到了「foot」div中。每當我過去遇到問題時,我總能在網上找到它,但這次不是。很高興我問了這個問題。再次感謝所有人的所有意見。對此,我真的非常感激! –

0

我的功能

function formatNumberWithCommasDec(d) { 
     d += ""; 
     var c = d.split("."); 
     var f = c[1]; 
     var a = c.length > 1 ? c[0] + '.' : '.', flag = false; 
     var g = f.split('').reverse(), y = 1, s = ''; 
     for (var i = g.length - 1; i >= 0; i--) { 
     flag = false; 
      var e = g[i]; 
     var h = (y === 3) ? s = s + e + ',' : s = s + e; 
     console.log(e); 
     if(y === 3){ 
      y = 1; 
      flag = true; 
     } else { 
      y = y + 1; 
     } 
      } 
    if(flag){ 
      s = s.substring(0, s.length - 1); 
    } else { 
      s = s; 
    } 
    return a + s;  
    } 

小提琴https://jsfiddle.net/6f0tL0ec/1/

更新:發現了一些問題,但現在萬物好

0

看來你的問題實際上只是設置DOM元素的內容。在How to print a number with commas as thousands separators in JavaScript利用該解決方案用於格式化數字,你需要的是:

function calculateMeter() { 
    if (feet.innerHTML > 0) { 
     meter.innerHTML = numberWithCommas*(feet.innerHTML * 0.3048).toFixed(1)); 
     feet.innerHTML = numberWithCommas(feet.innerHTML); 
    } 
} 
+1

He說千位**的地方,而不是數千 – Derek

+0

@奧利弗·奎因:有趣。儘管這可能只是由OP不正確地表達。這是一種常用的格式化數字的方法嗎?我從來沒有見過像這樣的東西... –

+0

我不知道,但他說了很多次,並且*在正常的逗號sep腳本在線有*噸函數... – Derek

相關問題