2017-08-09 51 views
0

我有我的视图中具有计算列的表中的记录列表。表中只计算第一行的计算字段 - 循环遍历表中的行以计算列值

List of records

从图像,所讨论的列是加价柱,并且产生/从价格,Casecost和Casesize计算出其值。此列仅对用户可见,并且不会保存在数据库/表中。加载页面时计算值(超过10行的下一个/上一个)。对于记录中的每个页面,它仅计算图片中第一行的值。

CSHTML我

@Html.TextBox("q_markup", null, new { @class = "calc markupclass", @readonly = "readonly" }) 

的Javascript

function calculate() { 

      //Fields that are used for calculations (declare variables) 
      var casecost = parseFloat($('#item_q_casecost').val()); 
      var casesize = parseFloat($('#item_q_casesize').val()); 
      var price = parseFloat($('#item_q_sellprice').val()); 

      //calculations 
      var unitcost = casecost/casesize; 
      var markup = ((price - unitcost)/unitcost) * 100; 

      //put calculated value into field 
      $('#q_markup').val(markup.toFixed(2));   
    } 

    $(document).ready(function() { 
     calculate(); 
    }); 

我曾经试图要在以下方式我的计算功能的循环没有任何成功

function calculate() { 

//gather all markup fields on page 
var rows = document.getElementsByClassName("markupclass"); 

//cycle through each rows and calculate 
for (i = 0; i < rows.length; i++) { 

    //do my calculations here 
    } 
} 

我怎么能得到这个计算所有行的字段?

回答

0

这是我设法解决这个问题的人谁碰到这个问题

先用表我来(注:类“searchTable”

<table id="ListTable" class="table searchTable"> 
    <tr> 

通过行循环并获得所需的值的每个字段

function calculate() { 
     $('.searchTable tr').each(function() { 

      //Fields that are used for calculations (declared variables) 
      var casecost = $(this).find('#item_q_casecost').val(); 
      var casesize = $(this).find('#item_q_casesize').val(); 
      var price = $(this).find('#item_q_sellprice').val(); 
      var vat = $(this).find('#item_viewVat').val(); 

      //calculations - PREREQUISITES 
      var unitcost = casecost/casesize; 
      var profit = (price - unitcost) - ((vat/100) * price); 

      //calculations - FIELD VALUES 
      var markup = ((price - unitcost)/unitcost) * 100; 
      var gprofit = (profit/price) * 100; 

      //assign calculated values to table fields (columns) 
      $(this).find('#q_markup').val(markup.toFixed(2)); 
      $(this).find('#q_grossprofit').val(gprofit.toFixed(2)); 

     });   
    } 

GP和标记是计算字段列(图像)

Final result

0

不能完全确定,但你可以尝试修理你的for循环

function calculate() { 

//gather all markup fields on page 
var rows = document.getElementsByClassName("markupclass"); 

//ADDED - middle conditional - cycle through each rows and calculate 
for (i = 0; i < rows.length; i++) { 

    //do my calculations here 
    } 
} 
+0

啊是我的一个错字,当我插入的代码进入正题。对于那个很抱歉。它只用该(正确)循环计算第一行。 – LavsTo

+0

是rows.length给你你正在寻找的数字?在你的计算函数中 - 这行这里'$('#q_markup').val(markup.toFixed(2))' - 它是动态的吗?你是否将该值应用于独特的行? –

+0

rows.length给了我一个10的值,这个值与页面上的10行/记录一次是正确的。 '$('#q_markup').val(markup.toFixed(2))'行是动态的。我以为循环会把这个值赋给唯一的行,除非我错过了一些东西。 – LavsTo