1
I have the following code that creates a table in jquery. The problem is that I wanted to create a subtotal that would add up all the values of the total column. But I’m not getting it because the table is created dynamically. Any suggestions?
Follows the code:
function retorna_pedidos(valor)
{
let mensagem_pedidos = "Nenhum pedido encontrado";
let container_mostra_pedidos = $('.mostra_pedidos');
let quantidade = $('#qtd').val();
let quantidade_pedidos = "";
let valorTotal = "";
let itemHTMLp = "";
if (valor == null)
{
valor = 1;
}
$.ajax({
url: url_base + "pedidos?qtd=" + quantidade + "&page=" + valor,
type: 'GET',
dataType: 'json',
success: function (data)
{
var retorno = data.pedidos.data;
if (retorno == 0)
{
$('.classe-pedidos').css('display','none');
$('.pedido-error-registro').css('display','block');
$('.pedido-error-registro .mensagem-erro').html(mensagem_pedidos);
}
else
{
$.each(data, function(key,item) {
let registros = item.data.length;
let current_page = item.current_page;
let last_page = item.last_page;
let next_page_url = item.next_page_url;
let prev_page_url = item.prev_page_url;
let pedidos = item.data;
sessionStorage.setItem('pagina',current_page);
sessionStorage.setItem('last_page',last_page);
if (next_page_url == null)
{
if (current_page == 1)
{
$('.action-bar-pedido').html("<a id='btn-pagina-anterior-pedido' title='Pàgina Anterior' class='buttonPrevious btn btn-primary' style='display: none;'><< Página Anterior</a>");
}
else
{
$('.action-bar-pedido').html("<a id='btn-pagina-anterior-pedido' title='Pàgina Anterior' class='buttonPrevious btn btn-primary' style='display: block;'><< Página Anterior</a>");
}
}
else if (prev_page_url == null)
{
$('.action-bar-pedido').html("<a id='btn-proxima-pagina-pedido' title='Próxima Página' display='block' class='buttonNext btn btn-success'>Próxima Página >></a>");
}
else if (prev_page_url != null || next_page_url != null)
{
$('.action-bar-pedido').html("<a id='btn-proxima-pagina-pedido' title='Próxima Página' display='block' class='buttonNext btn btn-success'>Próxima Página >></a><a id='btn-pagina-anterior-pedido' title='Pàgina Anterior' class='buttonPrevious btn btn-primary' style='display: block;'><< Página Anterior</a>");
}
for (var i in pedidos) {
id_pedido = pedidos[i].pedidos_id;
nome_cliente = pedidos[i].nome_cliente;
nome_produto = pedidos[i].nome_produto;
data_atual = pedidos[i].data;
data_pedido = data_atual.split("-").reverse().join("/");
frete_atual = pedidos[i].frete;
preco_produto = pedidos[i].preco_produto;
quantidade_pedidos = pedidos.length;
// console.log(pedidos);
valorTotal = parseFloat(quantidade_pedidos) * parseFloat(preco_produto) + frete_atual;
itemHTMLp += "<tr>";
itemHTMLp += "<td><input type='checkbox' value='" + id_pedido + "' name='verifica_check_box[]' id='verifica_check_box' class='flat'/></td>";
itemHTMLp += "<td>" + nome_cliente + "</td>";
itemHTMLp += "<td>" + nome_produto + "</td>";
itemHTMLp += "<td>" + data_pedido + "</td>";
itemHTMLp += "<td class='frete-produto'>" + frete_atual + "</td>";
itemHTMLp += "<td class='preco-produto'>" + preco_produto + "</td>";
itemHTMLp += "<td class='valor-total'>" + valorTotal + "</td>";
itemHTMLp += "</tr>";
}
});
container_mostra_pedidos.html(itemHTMLp);
}
},
error: function (data)
{
console.log(data);
}
});
Is your doubt about how to generate the total or when to do it? If you make a function that calculates the total and calls it after playing the table in the DOM effectively, you will have what you want. Would that be your problem or would it be in the same sum function?
– DiegoSantos
in fact it would add the values of td value-total. That neither product 1 = 25, product 2 = 50, total = 75
– Felipe Michael da Fonseca
@Diegosantos. It would only add the values of the total-value column, because it already makes the sum of the product in the variable valueTotal
– Felipe Michael da Fonseca
Brother, your code has some key error. Can you post it again fixed? Then I help you blz...
– DiegoSantos
I tried to run it but it already gave problem in the interpretation...
– DiegoSantos
OK @Diegosantos. I’ve got it
– Felipe Michael da Fonseca