如何在 JavaScript 中动态创建的行中获得 2 列的差异

how to get difference of 2 columns in dynamically created rows in javascript

本文关键字:JavaScript 动态 创建      更新时间:2023-09-26

>我有一个动态创建的有 3 列的表。我需要在 Col 3 中填充 Col 2 和 Col 1 的差异。我不知道如何继续动态创建的表。我正在读取保存函数中的表值。您能否建议如何包含差异代码?

.JS:

function save()
{
 var eval_tbl = document.getElementById('bagger_reading_list');
 var eval_row_array = [];
        for (i=0; i<eval_tbl.rows.length; i++)
        {
            var tableRow = {
                Start_Reading : eval_tbl.rows[i].cells[1].firstElementChild.value,
                End_Reading : eval_tbl.rows[i].cells[2].firstElementChild.value,
                Total_Reading : eval_tbl.rows[i].cells[3].firstElementChild.value, '' I need the difference of End-Reading - Start_Reading to be displayed on Total_Reading of eah row created.
            }
            eval_row_array[eval_row_array.length] = tableRow;
        }
}

使用 parseFloat() 将值转换为 Float(只是为了安全起见)并将其相加。像这样做:

Total_Reading : parseFloat(eval_tbl.rows[i].cells[2].firstElementChild.value) - parseFloat(eval_tbl.rows[i].cells[1].firstElementChild.value),

因此,您的保存函数应如下所示:

function save()
{
 var eval_tbl = document.getElementById('bagger_reading_list');
 var eval_row_array = [];
        for (i=0; i<eval_tbl.rows.length; i++)
        {
            var tableRow = {
                Start_Reading : eval_tbl.rows[i].cells[1].firstElementChild.value,
                End_Reading : eval_tbl.rows[i].cells[2].firstElementChild.value,
                Total_Reading : parseFloat(eval_tbl.rows[i].cells[2].firstElementChild.value) - parseFloat(eval_tbl.rows[i].cells[1].firstElementChild.value)
            }
            eval_row_array[eval_row_array.length] = tableRow;
        }
}

Readup: parseFloat() |多核

试试这个:

 function save()
    {
     var eval_tbl = document.getElementById('bagger_reading_list');
     var eval_row_array = [];
            for (i=0; i<eval_tbl.rows.length; i++)
            {
var startReading = eval_tbl.rows[i].cells[1].firstElementChild.value;
var endReading = eval_tbl.rows[i].cells[2].firstElementChild.value;
var totalReading = parseFloat(endReading) - parseFloat(startReading);
                var tableRow = {
                    Start_Reading : startReading,
                    End_Reading : endReading,
                    Total_Reading : totalReading
                }
                eval_row_array[eval_row_array.length] = tableRow;
            }
    }

我写了一个小代码。检查它是否符合您的需求

 function saved()
{
         var eval_tbl = document.getElementById('Table');
         var eval_row_array = [];
         for (i=0; i<eval_tbl.rows.length; i++)
        {
            var tableRow = {
                Start_Reading : eval_tbl.rows[i].cells[0].innerHTML,
                End_Reading : eval_tbl.rows[i].cells[1].innerHTML,
                Total_Reading :parseInt(eval_tbl.rows[i].cells[0].innerHTML) - parseInt(eval_tbl.rows[i].cells[1].innerHTML)
            }
             eval_tbl.rows[i].cells[2].innerHTML=parseInt(eval_tbl.rows[i].cells[0].innerHTML) - parseInt(eval_tbl.rows[i].cells[1].innerHTML)
            eval_row_array[eval_row_array.length] = tableRow;
        }
}