2017-09-23 111 views
0

我需要解決一些計算,並使用.each()循環。我正在動態填充行<tr>,因此我使用.each()來遍歷表格,但當我必須按vat的值對它們進行排序時,我無法獲得不同的值。jQuery double。每個循環,幫助我解決邏輯問題

function callSum(id) { 
 
    var counter = 1; 
 
    var sum = document.getElementById("sum" + id).value; 
 
    var vat = document.getElementById("vat" + id).value; 
 

 
    $('.sumall').each(function() { 
 

 
     $('.vatall').each(function() { 
 
      if ($(this).val() == 0) { //if value of VAT is 0 sum it to vatTotalZero 
 
       document.getElementById("vatTotalZero").value = $(this, ".sumall").val; // don't know how to solve this 
 
      } else { //if value of VAT is > 0 sum it to vatTotal 
 
       document.getElementById("vatTotal").value = $(this, ".sumall").val; // don't know how to solve this 
 
      } 
 
      counter++; 
 
     }); 
 

 
    }); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> 
 
<tr> 
 
    <td class="col-sm-1"> 
 
    <input type="text" name="sum[]" id="sum1" onfocus="callSum(1)" class="sumall form-control"/> 
 
    </td> 
 
    <td class="col-sm-1"> 
 
    <input type="text" name="vat[]" id="vat1" class="vatall form-control "/> 
 
    </td> 
 
</tr> 
 

 
<br><br> 
 
<label>All Sums without VAT (vat 0)</label> 
 
<input type="text" name="vatTotalZero" id="vatTotalZero" class="form-control "/> 
 

 
<br><br> 
 
<label>All Sums with VAT (vat > 0)</label> 
 
<input type="text" name="vatTotal" id="vatTotal" class="form-control "/>

+0

嘿@SiCat,你的代碼給我留下了疑惑。查看您的代碼令人困惑。但我不認爲告訴你具體問題會有幫助也不聰明。恕我直言,如果你更新你的問題,它會更好,更直接。用非常簡單的詞語來描述你實際想要達到的目標。問候 – Axel

回答

0

請參閱在源代碼中disrciptive意見。

function callSum(id) { 
 

 
    var counter = 1, 
 
     sum = document.getElementById("sum" + id).value, 
 
     vat = document.getElementById("vat" + id).value, 
 
     sumallVal; 
 

 
    $('.sumall').each(function() { 
 

 
     /* get the value */ 
 
     sumallVal = $(this).val(); 
 

 
     $('.vatall').each(function() { 
 

 
      if ($(this).val() == 0) { //if value of VAT is 0 sum it to vatTotalZero 
 

 
       //document.getElementById("vatTotalZero").value = $(this, ".sumall").val; // don't know how to solve this 
 
       /* set the value */ 
 
       $("#vatTotalZero").val(sumallVal) 
 

 
      } else { //if value of VAT is > 0 sum it to vatTotal 
 

 
       //document.getElementById("vatTotal").value = $(this, ".sumall").val; // don't know how to solve this 
 
       /* set the value */ 
 
       $("#vatTotal").val(sumallVal) 
 

 
      } 
 

 
      counter++; 
 

 
     }); 
 

 
    }); 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> 
 
<tr> 
 
    <td class="col-sm-1"> 
 
     <!-- <input type="text" name="sum[]" id="sum1" onfocus="callSum(1)" class="sumall form-control" /> --> 
 
     <input type="text" name="sum[]" id="sum1" onchange="callSum(1)" class="sumall form-control" /> 
 
    </td> 
 
    <td class="col-sm-1"> 
 
     <input type="text" name="vat[]" id="vat1" class="vatall form-control " /> 
 
    </td> 
 
</tr> 
 
<br> 
 
<br> 
 
<label>All Sums without VAT (vat 0)</label> 
 
<input type="text" name="vatTotalZero" id="vatTotalZero" class="form-control " /> 
 
<br> 
 
<br> 
 
<label>All Sums with VAT (vat > 0)</label> 
 
<input type="text" name="vatTotal" id="vatTotal" class="form-control " />

在這裏,我們一起去的增強版本。
在這個版本中,我刪除未使用的東西,設置適當的事件處理程序,縮短了語法略有

function callSum(id) { 
 

 
    var sum = document.getElementById("sum" + id).value, 
 
     vat = document.getElementById("vat" + id).value, 
 
     sumallVal; 
 

 
    $('.sumall').each(function() { 
 

 
     /* get the value */ 
 
     sumallVal = $(this).val(); 
 

 
     $('.vatall').each(function() { 
 

 
      /* set the value */ 
 
      $($(this).val() == 0 ? "#vatTotalZero" : "#vatTotal").val(sumallVal) 
 

 
     }); 
 

 
    }); 
 

 
} 
 

 

 
$(document).ready(function() { 
 

 
    $('.sumall.form-control').on('input', function() { 
 
     // get number id directly from string id by deleting all non numbers 
 
     callSum(this.id.replace(/[^0-9]/gi, '')); 
 
    }) 
 

 
});
<tr> 
 
    <td class="col-sm-1"> 
 
     <!-- <input type="text" name="sum[]" id="sum1" onfocus="callSum(1)" class="sumall form-control" /> --> 
 
     <input type="text" name="sum[]" id="sum1" class="sumall form-control" /> 
 
    </td> 
 
    <td class="col-sm-1"> 
 
     <input type="text" name="vat[]" id="vat1" class="vatall form-control " /> 
 
    </td> 
 
</tr> 
 
<br> 
 
<br> 
 
<label>All Sums without VAT (vat 0)</label> 
 
<input type="text" name="vatTotalZero" id="vatTotalZero" class="form-control " /> 
 
<br> 
 
<br> 
 
<label>All Sums with VAT (vat > 0)</label> 
 
<input type="text" name="vatTotal" id="vatTotal" class="form-control " /> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>