Jquery 从表中填充json对象

Jquery 从表中填充json对象,jquery,json,loops,Jquery,Json,Loops,我有这张桌子 <table> <tr> <th>name</th> <th>address</th> <th>city</th> </tr> <tr> <td data-attr="name">amy</td> <td data-attr="address">123 El

我有这张桌子

<table>
  <tr>
      <th>name</th>
      <th>address</th>
      <th>city</th>
  </tr>
  <tr>
      <td data-attr="name">amy</td>
      <td data-attr="address">123 El St.</td>
      <td data-attr="city">Rossberg</td>
  </tr>

  <tr>
      <td data-attr="name">john</td>
      <td data-attr="address">232 Rosary Rd.</td>
      <td data-attr="city">Newberg</td>
  </tr>
使用jQueryV1.8.3执行此操作的正确方法是什么


另外,我明天将能够查看答案并接受用作解决方案的内容。谢谢

有一个jQuery插件可以将HTML表序列化为javascript对象

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


var table=$('#table id').tableToJSON()

有一个jQuery插件可以将HTML表序列化为javascript对象

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

var table=$('#table id').tableToJSON()

下面是一个例子:

$(文档).ready(函数(){
var数据=[];
var table=$('table');//如果使用id可能更好
表.find('tr')。每个函数(i){
如果(i!=0){//忽略标头
var$tds=$(this.find('td'),
name=$tds.eq(0).text(),
地址=$tds.eq(1).text(),
城市=$tds.eq(2.text();
数据推送({“name”:name,“address”:address,“city”:city});
}
});
var jsonPeople=JSON.stringify(数据);
警惕(jsonPeople);
});

名称
地址
城市
艾米
埃尔街123号。
罗斯贝里
厕所
罗萨里路232号。
纽伯格
以下是一个示例:

$(文档).ready(函数(){
var数据=[];
var table=$('table');//如果使用id可能更好
表.find('tr')。每个函数(i){
如果(i!=0){//忽略标头
var$tds=$(this.find('td'),
name=$tds.eq(0).text(),
地址=$tds.eq(1).text(),
城市=$tds.eq(2.text();
数据推送({“name”:name,“address”:address,“city”:city});
}
});
var jsonPeople=JSON.stringify(数据);
警惕(jsonPeople);
});

名称
地址
城市
艾米
埃尔街123号。
罗斯贝里
厕所
罗萨里路232号。
纽伯格
给你

var counter = 1;
var mainArray = [];
var subArray = new Object();

$('.toJson').each(function(){
    var col = $(this);
     subArray[col.data('attr')] = col.html();

    if(counter == 3)
    {
        mainArray.push(subArray);
        subArray = new Object();
        counter = 0;
    }
    counter++;
});

alert(JSON.stringify(mainArray));

给你

var counter = 1;
var mainArray = [];
var subArray = new Object();

$('.toJson').each(function(){
    var col = $(this);
     subArray[col.data('attr')] = col.html();

    if(counter == 3)
    {
        mainArray.push(subArray);
        subArray = new Object();
        counter = 0;
    }
    counter++;
});

alert(JSON.stringify(mainArray));

解决方案是创建一个数组,迭代表中的每一行,创建一个对象,迭代每个单元格,将数据属性和文本存储到创建的对象中,并最终将该对象推送到数组中

var mainArray = [];

$('table tr').each(function () {
    var $tds = $(this).find("td");
    var len = $tds.length;
    if (len) {
        var tempObj = {};
        for (var i = 0; i < len; i++) {
            var $td = $tds.eq(i);
            temp[$td.data("attr")] = $td.text();
        }
        mainArray.push(temp);
        tempObj = {};
    }
});

alert(JSON.stringify(mainArray));
var mainArray=[];
$('table tr')。每个(函数(){
var$tds=$(this.find(“td”);
var len=$tds.length;
如果(len){
var tempObj={};
对于(变量i=0;i

解决方案是创建一个数组,迭代表中的每一行,创建一个对象,迭代每个单元格,将数据属性和文本存储到创建的对象中,并最终将该对象推送到数组中

var mainArray = [];

$('table tr').each(function () {
    var $tds = $(this).find("td");
    var len = $tds.length;
    if (len) {
        var tempObj = {};
        for (var i = 0; i < len; i++) {
            var $td = $tds.eq(i);
            temp[$td.data("attr")] = $td.text();
        }
        mainArray.push(temp);
        tempObj = {};
    }
});

alert(JSON.stringify(mainArray));
var mainArray=[];
$('table tr')。每个(函数(){
var$tds=$(this.find(“td”);
var len=$tds.length;
如果(len){
var tempObj={};
对于(变量i=0;i

这个问题几乎为您提供了所需的一切:这个问题几乎为您提供了所需的一切:需要在不使用jQuery之外的任何插件或外部库的情况下执行此操作,尽管这对未来来说是个好消息需要在不使用jQuery之外的任何插件或外部库的情况下执行此操作这是很好的未来知道