2016-04-12 3 views
0

Was ich versuche, ist es, einen Fortschrittsbalken für die Spende zu machen. Meine HTML-Struktur ist:Converting Strings zu Integer und erhalten die Persentage von zwei Nummer

<div class="hgoal" style="text-align: center;">My goal is to raise $<span id="mygoal">9,999.00</span></div> 
<div class="donation-total">Total Donation<span id="total-donation">1,000.00</span></div> 

mein Javascript so weit ist den Innerhtml-Wert von mygoal und Gesamt-Spende zu erhalten.

var mygoal = document.getElementById("mygoal").innerHTML; 
var totalgoal = document.getElementById("total-donation").innerHTML; 

und ich bin immer dies als Resultat:

mygoal = "9,999.00"; 
total-donation = "1,000.00"; 

Ich glaube, dies ist ein String und keine ganze Zahl ist, und mit parseInt() geben Sie mir nur die erste Ziffer Nummer.

Kann mir jemand eine Idee geben, wie kann ich dies zu einer Ganzzahl machen, die für die Berechnung verwendet werden kann? Beispiel:

mygoal + total-donation = 10,999.00 

Und auch, irgendeine Idee, wie ich den Prozentsatz dieser zwei Variablen erhalten kann?

Antwort

1

Verwenden .replace(/,/g,'') zu Kommas ersetzen, dann erhalten Sie den Zauber der Art Zwang Ihre Zeichenfolge in eine Zahl bei der Berechnung zu konvertieren ...

var mygoal = document.getElementById("mygoal").innerHTML.replace(/,/g,''); 
var totalgoal = document.getElementById("total-donation").innerHTML.replace(/,/g,''); 

Wenn Sie + auf Strings verwenden, werden sie zu jeder angehängt werden andere, aber andere mathematische Operatoren (*/- etc ...) werden zuerst die Strings zu Zahlen zwingen. Um Zwang zu erzwingen, können Sie durch 1, multiplizieren oder vielleicht Number("123123.123") verwenden ...

Number(mygoal) + Number(totalgoal); // using addition, so coerce strings to numbers 
(mygoal/total_donation) * 100; // does not need coercion 
+0

Dies löste mein Problem. Vielen Dank! – RaffyM

0

sollten Sie verwenden parseFloat(), nicht parseInt() ... Mehr haben Sie die Kommas aus der Zeichenfolge zu entfernen, da parseFloat() nicht Zahlenformatierung Zeichen nicht undertsand (wie Komma). So zum Beispiel:

mygoal = mygoal.replace(/,/g, ''); 
total_donation = total_donation.replace(/,/g, ''); 

Um den Prozentsatz von zwei Zahlen zu erhalten, verwenden:

(mygoal/total_donation) * 100; 

Beachten Sie, dass in JavaScript Sie nicht 'minus' char (-) in Variablennamen verwenden können.
Sie könnten zum Beispiel "Unterstrich" char (_) oder CamelCase verwenden, was der empfohlene Stil für Variablen in JavaScript ist.

0

Ihr Hauptproblem ist, dass Ihre Zahlen Doppelpunkte enthalten. Der Aufruf von parseFloat() funktioniert, sobald Sie diese Doppelpunkte ersetzen. Sie können den folgenden Code verwenden, dies zu tun:

// define regexp to replace colons 
var replaceColons = new RegExp(',', 'g'); 

// apply regex 
num = num.replace(replaceColons, ''); 
0

mygoal=parseInt(mygoal.replace(/,/gi,"")) geben Ihnen mygoal=9999.

0

Sie müssen diese Indian (vielleicht) Zahlen gültige Javascript Zahlen für die Summe konvertieren, dann wandeln die Ausgabe wieder in den Ausgang Format mit Number.toLocaleString.

var mygoal = "9,999.00"; 
 
var total_donation = "1,000.00"; 
 
var total = Number((Number(mygoal.replace(/,/g, '')) + Number(total_donation.replace(/,/g, ''))).toFixed(2)); 
 
var finalResult = total.toLocaleString('en-IN',{minimumFractionDigits: 2 }); 
 
alert(finalResult);

+0

Abgesehen davon, dass diese Lösung für Anfänger schwer verständlich ist, funktioniert sie nicht für Zahlen> 10^6. – Dodekeract

+0

@Dodectoract Ich habe meine Antwort aktualisiert. Ich freue mich über weitere Rückmeldungen. – Lewis