所有价格都没有总结价格,而是将价格放在一起

时间:2017-07-22 06:16:58

标签: javascript input numbers sum

我想总结一些价格并将它们放入所有价格输入中,但功能并不是对数字求和,而是将数字放在一起。是否有任何代码将字符串更改为数字?

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

4 个答案:

答案 0 :(得分:0)

有可能在var TotalPrc = Totalextmdl + Totalintmdl + Totalextrndr + Totalintrndr + Totalpp;语句中,TotalextmdlTotalintmdlTotalextrndrTotalpp值被读取为字符串。

您可以将+符号放在这些变量前面,将其值转换为数字:

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

答案 1 :(得分:0)

我认为您正在寻找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

答案 2 :(得分: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;

答案 3 :(得分: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;