Javascript计算税金和总价

时间:2014-10-31 11:05:57

标签: javascript html

我在计算每件产品的总价和税时面临一个小问题。 我也做了一个小提琴:http://jsfiddle.net/wk4dpfLt/1/

这是我实际代码的简化代码:

<table>
   <tr>
       <td>Product</td>
       <td>Prijs</td>
       <td>BTW</td>
    </tr>
    <tr>
        <td><input type='text'  value='Product1' /></td>
        <td><input type='text' id='p1' value='10' name='prijs' /></td>
        <td><input type='text' id='bh1' value='21' name='btw_hoog' /></td>
    </tr>
    <tr>
        <td><input type='text' value='Product2' /></td>
        <td><input type='text' id='p2' value='10' name='prijs' /></td>
        <td><input type='text' id='bh2' value='21' name='btw_hoog' /></td>
    </tr>
    <tr>
        <td><input type='text' value='Product3' /></td>
        <td><input type='text' id='p3' value='10' name='prijs' /></td>
        <td><input type='text' id='bl1' value='6' name='btw_laag' /></td>
    </tr>
    <tr>
        <td><input type='text' value='Product4' /></td>
        <td><input type='text' id='p4' value='10' name='prijs' /></td>
        <td><input type='text' id='bl2' value='6' name='btw_laag' /></td>
    </tr>
    <tr>
        <td><button id='myBtn'>Bereken</button></td>
    </tr>
    <tr>
        <td>Totaal:</td>
        <td><input type='text' value='' id='totaalprijs' class='totaalprijs' /></td>
    </tr>
    <tr>
        <td>Totaal BTW Laag:</td>
        <td><input type='text' value='' id='totaalbtwlaag_input' /></td>
    </tr>
    <tr>
        <td>Totaal BTW Hoog:</td>
        <td><input type='text' value='' id='totaalbtwhoog' /></td>
    </tr>
    <tr>
        <td>Totaal incl. BTW:</td>
        <td><input type='text' value='' class='totaalinc' /></td>
    </tr>

在这篇文章中我有4排产品。 产品=产品名称,Prijs是产品的奖品,BTW是税。 现在基本上我试图实现的是填充4行Totaal,BTW Laag,Totaal BTW Hoog和Totaal incl。当我点击按钮时BTW。

Totaal是奖品的总和。我得到了这个工作。 Totaal BTW Laag是id bl的值,这是6. 6正在进行中,所以我尝试了(6/100)*奖,但这不起作用..

有人能指出我正确的方向吗? 这是我的javascript:

function getPrijs()
 {
     var prijzenCount = document.getElementsByName("prijs");
     var total = 0;
         var id= '';
     for(var i = 0; i < prijzenCount.length; i++)
     {
         id = "p"+(i+1);
         total = total +  parseInt(document.getElementById(id).value);
     }



    document.getElementById('totaalprijs').value = total;

     calcBtwLaag();

 }

function calcBtwLaag()
{

   var btwlaagCount = document.getElementsByName("btw_laag");
     var total = 0;
         var id= '';
         var prijsid = '';
     for(var i = 0; i < btwlaagCount.length; i++)
     {
         id = "bl"+(i+1);
         prijsid = "prijs_laag_"+(i+1);

         if(isNaN(prijsid)) {
             document.getElementsByName(prijsid).value = 0;
             var prijsvalue = parseInt(document.getElementsByName(prijsid).value);
             var btw_laag_procent = parseInt(document.getElementById(id).value);
             var btw_laag_result = (btw_laag_procent / 100) * prijs;
             alert(btw_laag_result);

             total = total +  parseInt(btw_laag_result);
         }
     }



    document.getElementById('totaalbtwlaag_input').value = total;
     return total;
}

function test()
{
 alert(document.getElementById('b3').value);   
}

myBtn.addEventListener('click', function(event) {
  getPrijs();
});

3 个答案:

答案 0 :(得分:2)

您缺少右括号:

if (!isNaN(prijsid)) {
     note this ----^

答案 1 :(得分:2)

尝试使用浮点数,而不是整数。如果它们是整数,则6/100 = 0.

 var btw_laag_procent = parseFloat(document.getElementById(id).value);
             var btw_laag_result = (btw_laag_procent / 100.0) * parseFloat(prijs);

答案 2 :(得分:2)

一些问题

  • if (!isNaN(prijsvalue) {中缺少)的语法错误。它应该是if (!isNaN(prijsid)) {
  • 使用isNaN进行的检查是检查元素的名称,而不是其值。
    你应该首先得到它的值并检查它(还注意到当使用getElementsByName时你得到一个集合,所以你需要以数组的形式访问它的元素。使用[0]获取第一个元素即使只有一个。

    prijsid = "prijs_laag_" + (i + 1);
    prijsvalue = parseInt(document.getElementsByName(prijsid)[0].value,10);
    
    if (!isNaN(prijsvalue)) {
    
    • 要进行计算,请执行(btw_laag_procent * prijsvalue) / 100

http://jsfiddle.net/wk4dpfLt/3/

演示