Good afternoon, I have a script that helped me do it right here, which creates a table after reading information from a textarea. After the table is ready I wanted to sum the values from one of the table columns. I can even calculate the total when the data is entered for the first time, but if I add a row or delete a row I can not update that value, then I thought of creating a function to recalculate this value and call it whenever I make a change in the table. I created the function only that it does not work well, it keeps repeating several times the same field and in the second line for example it does not return the data only the word undefined
Follow the code that generates the table.
function addItens ()
{
let total =0;
// Elemento textarea:
const texto = $("#texto");
// Elemento table:
const table = $("#products-table");
// Divide o conteúdo de textarea em linhas:
let linhas = texto.val().split("\n");
// Percorre todas as linhas:
for (i in linhas)
{
// Verifica se a linha não está vazia:
if (linhas[i])
{
// Divide o conteúdo da linha em colunas:
let retorno = linhas[i].split(" ");
// Cria uma nova linha na tabela:
let newRow = $("<tr>");
// Percorre todas as colunas:
for (j in retorno)
{
// Verifica se a coluna não está vazia:
if (retorno[j])
{
// Cria a nova coluna na tabela:
let newCol = $("<td>");
// Adiciona o conteúdo na coluna:
newCol.html(retorno[j]);
// Adiciona a coluna na linha:
newRow.append(newCol);
}
}
total += parseInt(retorno[2]);
// alert(total);
// Cria a coluna de ação:
let action = $("<td>");
// Adiciona a classe "actions":
action.addClass("actions");
// Adiciona o botão Remover à coluna de ação:
action.html('<button class="btn btn-large btn-danger" onclick="RemoveTableRow(this)" type="button">Remover</button>');
// Adiciona a coluna na linha:
newRow.append(action);
// Adiciona a linha na tabela:
table.append(newRow);
}
}
Here is the function I created to scroll through the table and get the value of the column I need
function calculaTotal(){
var table = $("#products-table");
var linhas = document.getElementsByTagName("tr");
var colunas = document.getElementsByTagName("td");
for (i in linhas){
for(j in colunas){
alert(colunas[i].innerText);
};
}