2016-03-22 25 views
0

Ben çok temel kodlama becerileri gibi çevrimiçi dersler ve malzeme kullanarak aşağıdaki hızlı kredi hesap makinesi kodladı. Mükemmel bir şekilde çalışıyor, ihtiyacım olan tek şey, çıkış değerlerinin üçünün de sayılarda boşluklara ihtiyaç duymasıdır. Örneğin, "400000" yerine "400 000" çıkması gerekir. Büyük sayıları daha okunabilir hale getirmek için nasıl bir alan veya koma ekleyebilirim?JavaScript kullanarak bir sayı büyük sayı biçimlendirme nasıl yapılır

<form oninput="loanval.value=loan.value; periodval.value=period.value; paymentval.value=Math.floor(loan.value/period.value)"> 

<label>Loan Amount</label> 
<input type="range" id="loan" name="loan" min="5000" max="400000" step="5000">    
<output name="loanval" for="loan">0</output> 

<label>Loan Period</label> 
<input type="range" id="period" name="period" min="1" max="15">   
<output name="periodval" for="period">0</output> 

<label>Your monthly repayment will be: 
<output name="paymentval">0</output> 

</form> 
+1

Olası kopyalar (http://stackoverflow.com/questions/2901102/how-: O zaman böyle bir şey yapmak istiyorum onları eklemek -basamak-a-sayı-ile-bin-ayırıcılar-in-javascript) – Cruiser

+0

['Number.toLocaleString'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referans/Global_Objects/Sayı/toLocaleString) – pawel

+0

Thanx beyler, ama bunu benim koduma nasıl uygulayacağımı bilmiyorum ... nasıl ekleyebilirim? Üzgünüm ama çok temel becerilerim var, ama yardımları takdir ediyorum. – Shtarley

cevap

0

Numaranın 400000 ise, o zaman ilk önce kopyasını 400 1000 yani cevap modülünü almak gibi modülünü alarak numarayı kırabilir. ve kalan 0'dır, bu durumda 400'den sonra virgül koyabilirsiniz ve daha sonra hem 400 ve 1000 hem de 400.000 ekleyebilir. modül araçlarının Eğer ülkeye özel biçimlendirme istiyorsanız sizin yerel ekleyebilir

paymentval.value=Math.floor(loan.value/period.value).toLocaleString() 

-1000

1

Değişikliği

paymentval.value=Math.floor(loan.value/period.value) 

ile bölün. ÖRNEĞİN.

paymentval.value=Math.floor(loan.value/period.value).toLocaleString('de-DE') 
+0

Basit, basit çözüm için teşekkürler ... mükemmel çalışır. Ama sadece üçüncü çıkışta .... İlk iki çıktıyı kabul ediyorum .... farklı olarak eklenmeleri gerekiyor. NasılLocaleString'e oninput = "loanval.value = loan.value; – Shtarley

+0

İlk satır bir seçenek değil, kodunuzun bir parçası :). İkinci neden işe yaramadığını bilmiyorum, belki varsayılan yerel ayarlarınız için bir şey var. İkinci sorunuzu yanıtlamak için: kodunuzu 'oninput =" loanval.value = loan.value.toLocaleString ('de-DE') olarak değiştirin; ". Tüm bunlara ek olarak, JS'nin temellerini daha iyi anlamak için https://www.codecademy.com/learn/javascript gibi bir JS kursu öneririm! –

0

Bir yayılma için çıkış etiketini değiştirmek ve yapacağını bu:

var num = $('#loan').val(); 
num = numberWithCommas(num); 
$('#loanval').text(num); 

//from http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript 

function numberWithCommas(x) { 
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
} 

ve html olacaktır:

<label>Loan Amount</label> 
<input type="range" id="loan" name="loan" min="5000" max="400000" step="5000">    
<span id ="loanval">0</span> 

Sen de tüm çıkışlar için de yapabilirsiniz .

//for each span... 
var numberToAdd = $('#loanval').val(); 
numberToAdd = parseInt(numberToAdd); 
$('#paymentval').text(numberToAdd); 

<span id="paymentval">0</span> 
[JavaScript binlerce ayırıcı olarak virgül ile bir dizi baskı yöntemi] arasında