2017-07-22 3 views
0

Ich möchte einige Preise zusammenfassen und in Alle Preiseingabe setzen, aber die Funktion summiert die Zahlen nicht, es setzt die Zahlen nebeneinander. Gibt es einen Code, der die Zeichenfolge in die Nummer ändert?Alle Preise summieren sich nicht die Preise stattdessen setzt es die Preise nebeneinander

<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

Es weil JS glauben, dass dies eine Zeichenkette, also das Plus-Zeichen nur im Grunde Concat-Zeichenketten. Sie müssen Ihre Zahlen in floats zerlegen: '' 'parseFloat (Totalextmdl = document.getElementById ('model-ext-price'). Value)' '' – Treast

Antwort

0

element.value gibt eine Zeichenfolge. Sie wollen Zahlen. Eine einfache Möglichkeit, Ihre Feldwerte zu konvertieren ist ein unärer + zu verwenden, wenn Sie sie zuerst holen, wie folgt aus:

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

Es ist möglich, dass in var TotalPrc = Totalextmdl + Totalintmdl + Totalextrndr + Totalintrndr + Totalpp; Aussage, Totalextmdl, Totalintmdl, Totalextrndr, Totalpp Werte als String gelesen werden.

Sie ihren Wert in Zahl, indem + Symbol vor dieser Variablen umwandeln kann:

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

ich glaube, Sie sind für parseInt oder parseFloat (je nachdem, ob Sie ganze Zahlen oder nicht haben) suchen

ex: parseInt(document.getElementById ('model-ext-price').value) oder parseFloat(document.getElementById ('model-ext-price').value)

Dies stellt sicher, Sie bekommen eine Nummer und kein String zurück. Möchte andere Logik schreiben, um etwas zu tun, wenn parseInt (oder parseFloat) fehlschlägt.

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

0

Konvertieren Sie Ihre String-Werte in Zahlen:

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;