我有一个按钮,使表格中的最后tr
无效。每次执行此操作时,使用函数mainTotalCalc()
再次计算总数。
通过使用.each
和类来计算总数。
当我到达最后一排时,问题出现了。总数将保持最后总数。它永远不会达到0.00
现在我想我可以看到原因,因为JQ每个都考虑变量中的最后一个总数。
我被困在如何在总计算正确的情况下使最后剩余的行无效。
The Fiddle(但是parseFloat似乎在这里不起作用)
JS / JQ
function mainTotalCalc() {
var activetableID = $("li.till_table_button.active").attr('id');
// alert(activetableID);
var tablenumber = $("#"+activetableID).data("tableref");
// alert(tablenumber); //testing
var newtotal=0,total=0;
$('.till__tablepanel_table_'+tablenumber+'_row__totalprice').each( function(i) {
var number = $(this).text();
//alert(content);
//num = parseInt(number);
num = parseFloat(number);
newtotal += num;
// alert(number); //testing
totalpriceDecimal = newtotal.toFixed(2);
$('#till__totalpanel_table_'+tablenumber+'_price').html(newtotal.toFixed(2));
// alert(totalpriceDecimal);
i++;
});
}
在最后一次无效之前
在最后一次无效之后(总数保持为1.00且不应该)
答案 0 :(得分:1)
如果没有更多行,则设置保护条件:
if ($('.till__tablepanel_table_0_row__totalprice').length == 0)
$('#till__totalpanel_table_0_price').html('0.00');
答案 1 :(得分:0)
您的代码存在的问题是,总计正在更新内部 .each
循环。
如果现在有总行数,则不会运行。
按如下方式修改您的功能:
function mainTotalCalc() {
$('.till__tablepanel_table_'+tablenumber+'_row__totalprice').each( function(i) {
var number = $(this).text();
//alert(content);
//num = parseInt(number);
num = parseFloat(number);
newtotal += num;
// alert(number); //testing
totalpriceDecimal = newtotal.toFixed(2);
// alert(totalpriceDecimal);
i++;
});
// Move this line outside of the .each loop
$('#till__totalpanel_table_'+tablenumber+'_price').html(newtotal.toFixed(2));
}
答案 2 :(得分:0)
您错过了 newtotal 变量声明,只需执行此操作:
function mainTotalCalc() {
var newtotal = 0.0; // MISSED VARIABLE DECLARATION
$('.till__tablepanel_table_0_row__totalprice').each( function() {
var number = $(this).text();
console.log('number: ' + number);
newtotal += parseFloat(number);
console.log('newtotal= ' + newtotal);
totalpriceDecimal = newtotal.toFixed(2);
$('#till__totalpanel_table_0_price').html(totalpriceDecimal);
// alert(totalpriceDecimal);
});
}