Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将HTML表的表单输入字段转换为JSON_Javascript_Html_Forms_Html Table_Innerhtml - Fatal编程技术网

Javascript 将HTML表的表单输入字段转换为JSON

Javascript 将HTML表的表单输入字段转换为JSON,javascript,html,forms,html-table,innerhtml,Javascript,Html,Forms,Html Table,Innerhtml,我目前正在学习javascript,作为练习者,我正在尝试将HTML表单表转换为JSON,通过通信接口发送并添加到另一个页面 我目前可以通过使用以下代码遍历表来解析大多数字段的内容 function tableToJson(table) { var data = []; var headers = []; for(var i=0; i<table.rows[0].cells.length; i++) { headers[i] = table

我目前正在学习javascript,作为练习者,我正在尝试将HTML表单表转换为JSON,通过通信接口发送并添加到另一个页面

我目前可以通过使用以下代码遍历表来解析大多数字段的内容

function tableToJson(table)
{
    var data = [];

    var headers = [];
    for(var i=0; i<table.rows[0].cells.length; i++)
    {
        headers[i] = table.rows[0].cells[i].innerHTML.toLowerCase();
    }

    for(var i=1; i<table.rows.length; i++)
    {
        var tableRow = table.rows[i];
        var rowData = {};

        for(var j=0; j<tableRow.cells.length; j++)
        {
            rowData[ headers[j] ] = tableRow.cells[j].innerHTML;
        }
        data.push(rowData);
    }

    return JSON.stringify(data);
}

var tables = document.getElementsByTagName("table");

if(tables.length > 0)
{
    var json = tableToJson(tables[0]);
    console.log(json);
    /* Send part bellow */
}
函数tableToJson(表)
{
var数据=[];
var头=[];

对于(var i=0;i我已经能够通过解析innerHTML字符串来获取预填充值,以检索“name”属性值,并向DOM请求相关值

var name = tableRow.cells[j].innerHTML.replace(/.*name="([^"]+)".*$/g, "$1");
rowData[headers[j]] = document.getElementsByName(name)[0].value;
我仍然反对任何其他解决方案,我觉得这根本不是最好的解决方案

var name = tableRow.cells[j].innerHTML.replace(/.*name="([^"]+)".*$/g, "$1");
rowData[headers[j]] = document.getElementsByName(name)[0].value;