2016-04-12 12 views
0

私がやっていることは、寄付のための進捗バーを作ることです。私のHTML構造は次のとおりです。文字列を整数に変換し、2つの数字のpersentageを取得

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

私のjavascriptのは、これまでmygoalと総寄付のinnerHTMLプロパティの値を取得することです。

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

私は、これは文字列ではなく整数であると信じて、私だけ最初の桁数を与えるparseInt()を使用して:

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

と私は、結果としてこれを取得しています。

計算に使用できる整数にするにはどうすればいいですか?例:

mygoal + total-donation = 10,999.00 

また、どのように私はこの2つの変数の割合を得ることができますか?

答えて

1

カンマを置き換えるために使用.replace(/,/g,'')、その後、あなたは計算中に数にあなたの文字列を変換するために型強制の魔法を取得...

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

あなたは、文字列に+を使用している場合、彼らはそれぞれに追加されます他の数学演算子(*/-など...)は、最初に文字列を数字に強制します。強制を強制するには、1を掛け、または多分Number("123123.123")を使用することができます...

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

これは私の問題を解決しました。どうもありがとうございました! – RaffyM

0

あなたはparseFloat()、ないparseInt() ... 詳細を使用する必要があり、あなたはparseFloat()は、(カンマなど)数の書式文字をundertsandていないため、文字列からカンマを削除する必要があります。したがって、たとえば:JavaScriptであなたは、変数名に文字(-)を使用する「マイナス」ではないことを

(mygoal/total_donation) * 100; 

注:

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

二つの数、利用率を取得します。
「アンダースコア」の文字(_)またはCamelCaseを使用できます。これはJavaScriptの変数の推奨スタイルです。

0

あなたの主な問題は、数字にコロンが含まれていることです。これらのコロンを置き換えると、parseFloat()コールが機能します。これを行うには、次のコードを使用することがあります。

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

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

mygoal=parseInt(mygoal.replace(/,/gi,""))はあなたにmygoal=9999を与えるだろう。

0

あなたは合計のために有効なJavaScript番号にこれらのインド人(多分)の数値を変換する必要があり、その後、出力が戻っ初期に変換しますフォーマットは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

初心者のための理解が難しいことは別として、このソリューションは10^6以上の数字では機能しません。 – Dodekeract

+0

@Dodekeract私は自分の答えを更新しました。私はより多くのフィードバックを受け取ってうれしいです。 – Lewis

関連する問題