Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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数组 < >我有C++程序导出日志文件作为HTML表,我想知道是否有任何方法可以解析该表(类似的东西):_Javascript_Json - Fatal编程技术网

Javascript 从html表创建json数组 < >我有C++程序导出日志文件作为HTML表,我想知道是否有任何方法可以解析该表(类似的东西):

Javascript 从html表创建json数组 < >我有C++程序导出日志文件作为HTML表,我想知道是否有任何方法可以解析该表(类似的东西):,javascript,json,Javascript,Json,问题是,我希望此函数对给定给它的每个表都有效,并且具有任何可能的行或列计数(第一行始终是标题)。类似于此,假设第一行始终是标题(当然可以更改以使其更灵活): 通过传递format函数,可以将每个单元格的值格式化为正确的数据类型 它是在假定只有一个tbody元素的情况下工作的。您必须根据自己的需要进行调整。您可以使用jquery框架进行调整。我 <sript src="http://code.jquery.com/jquery-latest.js"></script> &

问题是,我希望此函数对给定给它的每个表都有效,并且具有任何可能的行或列计数(第一行始终是标题)。

类似于此,假设第一行始终是标题(当然可以更改以使其更灵活):

通过传递format函数,可以将每个单元格的值格式化为正确的数据类型


它是在假定只有一个
tbody
元素的情况下工作的。您必须根据自己的需要进行调整。

您可以使用jquery框架进行调整。我

<sript src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function(){
  var chartData = [];
  $("table tr").each(function(i){
    if(i==0) return;
    var id = $.trim($(this).find("td").eq(0).html());
    var value1 = $.trim($(this).find("td").eq(1).html());
    var value2 = $.trim($(this).find("td").eq(2).html());
    chartData.push({id: id, value1: value1, value2: value2});
  });
//now you have the chartData array filled
});
</script>

$(函数(){
var chartData=[];
$(“表tr”)。每个(功能(i){
如果(i==0)返回;
var id=$.trim($(this.find(“td”).eq(0.html());
var value1=$.trim($(this.find(“td”).eq(1.html());
var value2=$.trim($(this.find(“td”).eq(2.html());
push({id:id,value1:value1,value2:value2});
});
//现在您已经填充了chartData数组
});

干杯。

以下是我的实现:

var tableToObj = function( table ) {
    var trs = table.rows,
        trl = trs.length,
        i = 0,
        j = 0,
        keys = [],
        obj, ret = [];

    for (; i < trl; i++) {
        if (i == 0) {
            for (; j < trs[i].children.length; j++) {
                keys.push(trs[i].children[j].innerHTML);
            }
        } else {
            obj = {};
            for (j = 0; j < trs[i].children.length; j++) {
                obj[keys[j]] = trs[i].children[j].innerHTML;
            }
            ret.push(obj);
        }
    }

    return ret;
};

由于该表格式看起来像格式良好的XML,我将使用XSLT进行转换;您的C++程序可以只调用XSLT引擎。

< P>我需要相同的东西,除了忽略列、重写值和不被嵌套表混淆之外。最后,我将jQuery插件
表写入json

您只需使用jQuery选择表并调用插件:

var table = $('#example-table').tableToJSON();
下面是一个使用您的数据进行操作的演示:


chartData
是一个普通的JavaScript数组,而不是JSON(今天一定是出了问题,很多人对此感到困惑)。无论如何,我如何从一个表到一个数组提取数据?如果您可以使用jquery,这应该是一项简单的工作。但是,如果没有jquery,这将是一个有趣的挑战。。。认可的!我不得不将这一行:“row_data[header[j]=format(I,j,cell.textContent | | | cell.innerText)”更改为:“row_data[header[j]=format(cell.textContent | | cell.innerText)”,以使其正常工作。@Jean-Philippe:format函数接受多少个参数?如果要按原样使用代码,则必须为3。
var chartData = getData(referenceToTable, function(rowIndex, colIndex, value) {
    return +value; // shortcut to format text to a number
});
<sript src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function(){
  var chartData = [];
  $("table tr").each(function(i){
    if(i==0) return;
    var id = $.trim($(this).find("td").eq(0).html());
    var value1 = $.trim($(this).find("td").eq(1).html());
    var value2 = $.trim($(this).find("td").eq(2).html());
    chartData.push({id: id, value1: value1, value2: value2});
  });
//now you have the chartData array filled
});
</script>
var tableToObj = function( table ) {
    var trs = table.rows,
        trl = trs.length,
        i = 0,
        j = 0,
        keys = [],
        obj, ret = [];

    for (; i < trl; i++) {
        if (i == 0) {
            for (; j < trs[i].children.length; j++) {
                keys.push(trs[i].children[j].innerHTML);
            }
        } else {
            obj = {};
            for (j = 0; j < trs[i].children.length; j++) {
                obj[keys[j]] = trs[i].children[j].innerHTML;
            }
            ret.push(obj);
        }
    }

    return ret;
};
var obj = tableToObj( document.getElementsByTagName('table')[0] ); // or
var obj = tableToObj( document.getElementById('myTable') );
var table = $('#example-table').tableToJSON();