2017-07-22 8 views
0

私はいくつかの価格を合計してすべての価格入力に入れたいと思いますが、その機能は数値を合計しません。互いに隣り合っている。文字列を数値に変更するコードはありますか?すべての価格は代わりに価格を集計するのではなく、お互いに価格を入れます

<html> 

<label class="fa">ext modeling price</label> 
<input type="number" class="form-control" onchange="allPrc();" id="model- 
ext-price" placeholder= "0" ></input> 
<br> 
<label class="fa">int modeling price</label> 
<input type="number" class="form-control" onchange="allPrc();" id="model- 
int-price" placeholder= "0" ></input> 
<hr class="hrline"> 

<label class="fa"> ext renderign price</label> 
<input type="number" class="form-control" onchange="allPrc();" id="render- 
ext-price" placeholder= "0" ></input> 
<br> 
<label class="fa">int rendering price </label> 
<input type="number" class="form-control" onchange="allPrc();" id="render- 
int-price" placeholder= "0" y></input> 
<hr class="hrline"> 
<label class="fa">pproduction price </label> 
<input type="number" class="form-control" onchange="allPrc();" 
id="pproduction-price" placeholder= "0" y></input> 
<hr class="hrline"> 
<label class="fa"> All price </label> 
<input type="number" class="form-control" id="All-price" placeholder= "0" 
readonly></input> 
    </html> 


     <script> 

    document.getElementById ('model-ext-price').onchange = function() {allPrc();}; 
    document.getElementById ('model-int-price').onchange = function() {allPrc();}; 
    document.getElementById ('render-ext-price').onchange = function() {allPrc();}; 
    document.getElementById ('render-int-price').onchange = function() {allPrc();}; 
    document.getElementById ('pproduction-price').onchange = function() {allPrc();}; 





var allPrc = function() { 
var Totalextmdl = document.getElementById ('model-ext-price').value, 
    Totalintmdl = document.getElementById ('model-int-price').value, 
    Totalextrndr = document.getElementById ('render-ext-price').value, 
    Totalintrndr = document.getElementById ('render-int-price').value, 
    Totalpp = document.getElementById ('pproduction-price').value, 
    TotalPrc = 0; 

document.getElementById('All-price').value = TotalPrc; 

    var TotalPrc = Totalextmdl + Totalintmdl + Totalextrndr + Totalintrndr + 
Totalpp; 

    document.getElementById('All-price').value = (TotalPrc>0 && 
    TotalPrc!=='NaN')?TotalPrc:0; 

}; 

    </script> 
+0

それをJSはこれがあると信じているので、あなたのフィールドの値を変換する簡単な方法は、このように、あなたが最初にそれらを取得するとき単項+を使用することです文字列なので、プラス記号は基本的に文字列を連結します。数値を浮動小数点数に変換する必要があります: '' 'parseFloat(Totalextmdl = document.getElementById( 'model-ext-price')。value)' '' – Treast

答えて

0

element.value文字列を返します。あなたは数字がほしい。

var Totalextmdl = +document.getElementById('model-ext-price').value, 
    Totalintmdl = +document.getElementById('model-int-price').value, 
    Totalextrndr = +document.getElementById('render-ext-price').value, 
    Totalintrndr = +document.getElementById('render-int-price').value, 
    Totalpp = +document.getElementById('pproduction-price').value, 
    TotalPrc = 0; 
0

var TotalPrc = Totalextmdl + Totalintmdl + Totalextrndr + Totalintrndr + Totalpp;声明、TotalextmdlTotalintmdlTotalextrndrで、Totalpp値を文字列として読み込まれている可能性があります。

あなたはそれらの変数の前に+記号を入れて数にその値を変換することができます

var TotalPrc = (+Totalextmdl) + (+Totalintmdl) + (+Totalextrndr) + (+Totalintrndr) + (+Totalpp); 
1

(あなたが全体の数字かどうかを持っている場合によっては)私はあなたがparseIntparseFloatを探しているのだと思い

例:parseInt(document.getElementById ('model-ext-price').value)またはparseFloat(document.getElementById ('model-ext-price').value)

これで、文字列ではなく数字が返されます。 parseInt(またはparseFloat)が失敗した場合、何かをするための他のロジックを記述したいかもしれません。

https://www.w3schools.com/jsref/jsref_parseint.asp https://www.w3schools.com/jsref/jsref_parsefloat.asp

0

番号にあなたの文字列値を変換します:

var allPrc = function() { 
var ids =['model-ext-price','model-int-price', 
    'render-ext-price', 'render-int-price', 'pproduction-price']; 

var TotalPrice = 0; 
ids.forEach(funciton(id) { 
     totalPrice+=Number(document.getElementById(id).value; 
    }); 
return TotalPrice; 
} 

document.getElementById('All-price').value = allPrc; 
関連する問題