1

我有一个带有组合行td的HTML表格,或者怎么说,我不知道如何表达自己(我不太擅长英语),所以我展示它!这是我的桌子:

<table border="1">
    <thead>
        <tr>
            <th>line</th>
            <th>value1</th>
            <th>value2</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td rowspan="2">1</td>
            <td>1.1</td>
            <td>1.2</td>
        </tr>
        <tr>
            <td>1.3</td>
            <td>1.4</td>
        </tr>
        <tr>
            <td rowspan="2">2</td>
            <td>2.1</td>
            <td>2.2</td>
        </tr>
        <tr>
            <td>2.3</td>
            <td>2.4</td>
        </tr>
    </tbody>
</table>

(你可以在这里查看

我想通过 jquery 或 javascript 将此表转换为 JSON 变量。它应该是什么样子,我该怎么做?谢谢,如果你能帮助我!

4

3 回答 3

1

如果您只想转换文本,请使用这个:

var array = [];

$('table').find('thead tr').each(function(){
    $(this).children('th').each(function(){
      array.push($(this).text());
    })
}).end().find('tbody tr').each(function(){
    $(this).children('td').each(function(){
      array.push($(this).text());
    }) 
})

var json = JSON.stringify(array);
于 2013-07-22T08:17:28.583 回答
1

以某种方式表示您的表格对我来说没有问题,但问题是如何将其解析回 HTML!这是一个带有前 6 个标签的 JSON:

{"table":{"border":1,"thead":{"th":{"textContent":"line","tr":"textContent":"value1",...}}}}}...

或者为了更好地理解:

{"tag":"table","border":1,"child":{"tag":"thead","child":{"tag":"th","textContent":"line",
   "child":{"tag":"tr","textContent":"value1","child":...}}}}...

包括结束标签。

为了进一步解释,我需要知道您的表是字符串还是 DOM 的一部分。

于 2015-04-22T17:04:34.387 回答
0

我相信这就是你想要的:

var jsonTable = {};

// add a new array property named: "columns"
$('table').find('thead tr').each(function() {
    jsonTable.columns = $(this).find('th').text();
};

// now add a new array property which contains your rows: "rows"
$('table').find('tbody tr').each(function() {
    var row = {};

    // add data by colum names derived from "tbody"

    for(var i = 0; i < jsonTable.columnsl.length; i++) {
        row[ col ] = $(this).find('td').eq( i ).text();
    }

    // push it all to the results..

    jsonTable.rows.push( row );
};

alert(JSON.stringify(jsonTable));

我认为应该有一些更正,但我认为就是这样。

于 2013-07-21T21:15:36.823 回答