2016-04-28 3 views
0
ein

Ich habe eine Funktion erstellt, die eine Zahl in imperial-Einheiten in ein div übernimmt und diesen Wert in metrische Einheiten in einem anderen div konvertiert. Da ich für js relativ neu bin, merke ich jetzt, dass ein Komma-Separator der 1000. Stelle nicht Standard ist. Ich habe versucht, viele der Lösungen (viele von ihnen) anzuwenden, die ich gefunden habe, aber keiner meiner Bedürfnisse oder hat funktioniert. Einfach gesagt, ich suche nur nach divs ausgegebenen Zahlen haben Kommas, die den tausendsten Platz trennen. Letztendlich sind diese Zahlen Höhenwerte, ausgedrückt in Fuß und Metern. Jeder Einblick würde sehr geschätzt werden ... danke!Fügen Sie ein Komma an der Stelle der Tausendstel in der ausgegebenen Zahl

Hier ist mein Code:

<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

Es ist [eine neue DOM-API namens Intl] (https: // Entwickler. mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat) für die Formatierung von Zahlen und anderen Dingen je nach Benutzergebietsschema, kann es Ihnen helfen – aarosil

+0

Wie ich schon sagte, ich habe viele Lösungen, diese eine recherchiert enthalten, ohne Erfolg. Bitte helfen Sie. –

+0

Die Probleme scheinen zu sein, dass Sie nicht wissen, wie man den Inhalt des HTML aktualisiert? Was ist der Zweck von 'feet.toString();'? Warum vergeben Sie 'feet'? Möchten Sie stattdessen 'feet.innerHTML = feet.innerHTML.replace (...)'? –

Antwort

0

Hier ist eine einfache RegEx Lösung ist

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

Ok! Das hat funktioniert, vielen Dank! Ich nahm sogar Ihren Code und arbeitete in ein paar neuen Zeilen, die das Komma auch zum "Fuß" -Div hinzufügt. Wann immer ich ein Problem in der Vergangenheit hatte, konnte ich es immer online finden, aber diesmal nicht. Froh, dass ich die Frage gestellt habe. Danke nochmal an alle für ihre Beiträge. Ich schätze das wirklich! –

0

Meine Funktion:

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;  
    } 

Fiddle: https://jsfiddle.net/6f0tL0ec/1/

-Update: fand einige Probleme, aber every gut jetzt

0

Es scheint, Ihr Problem besteht darin, nur den Inhalt das DOM-Element zu setzen. Unter Verwendung der Lösung in How to print a number with commas as thousands separators in JavaScript für die Formatierung von Zahlen, alles, was Sie brauchen, ist:

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

Er sagte tausend ** ths ** Platz, nicht Tausende – Derek

+0

@OliverQueen: Interessant. Obwohl das vom OP nur falsch ausgedrückt werden könnte. Ist das eine übliche Methode, um eine Nummer zu formatieren? Ich habe noch nie so etwas gesehen ... –

+0

Ich habe keine Ahnung, aber er sagt es mehrmals, und es gibt * Tonnen * Funktionen für ein normales komma sep Skript online ... – Derek

Verwandte Themen