javascript - Jquery-从 HTML 表创建 JavaScript 对象

标签 javascript jquery html arrays object

我尝试从表中创建 js obj。就像下面一样,我想要一个使用 jquery 形成的 json 对象。

第一行 tr 应被视为标题,其余的 tr 应被视为正文。顺序应为表 tr 的行索引。

<table class='table-out'>
   <tr class='header'>
          <td>title</td>
          <td>name</td>
          <td>address</td>
   </tr>
   <tr>
          <td>Mr.</td>
          <td>John Doe</td>
          <td>St. Michael Rd.</td>
   </tr>
   <tr>
          <td>Mr.</td>
          <td>Daniel Kautman</td>
          <td>St. Michael Rd.</td>
   </tr>
</table>

我需要的 JSON 对象:

tableObj =
[
     head:
        {
           txttitle: title,
           txtName: Name,
           txtAddrs: Address,
           order: 1
        }
     body:
        [{
            txttitle: Mr,
            txtName: John Doe,
            txtAddrs: St. Michael Rd
            order: 1
        },
        {
            txttitle: Mr,
            txtName: Mrak Doe,
            txtAddrs: 3 Z, Moyed Park
            order: 2
        },
        {
            txttitle: Mr,
            txtName: Meghan Slattery,
            txtAddrs: address here
            order: 3
        }]
]

我尝试过的事情-

$('.table-out>tbody>tr').each(function (index, elem){
  if($(this).hasClass(header)){
    ......
  }else{
    ......
 }
});

最佳答案

你就快到了。获取每行的单元格并根据列索引获取文本。顺便说一句,您的 tableObj 需要是一个对象,而不是一个数组。

例如

var tableObj = {
  head: {},
  body: []
};

$(".table-out tr").each(function(index, value) {
  var $cols = $(this).children("td");

  var item = {
    txttitle: $cols.eq(0).text(),
    txtName: $cols.eq(1).text(),
    txtAddrs: $cols.eq(2).text()
  };

  if ($(this).hasClass("header")) {
    item.order = 1;
    tableObj.head = item;
  } else {
    item.order = index;
    tableObj.body.push(item);
  }

});

console.log(tableObj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class='table-out'>
  <tr class='header'>
    <td>title</td>
    <td>name</td>
    <td>address</td>
  </tr>
  <tr>
    <td>Mr.</td>
    <td>John Doe</td>
    <td>St. Michael Rd.</td>
  </tr>
  <tr>
    <td>Mr.</td>
    <td>Daniel Kautman</td>
    <td>St. Michael Rd.</td>
  </tr>
</table>

关于javascript - Jquery-从 HTML 表创建 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53975017/

相关文章:

javascript - FireFox - 将事件附加到动态添加的功能?

javascript - 为什么我不能直接访问该对象内的属性?

javascript - jquery - (...).autocomplete 不是一个函数

javascript - handlebars #每个数组都是助手

html - 无法使用 Bootstrap 解决方案使不使用导航栏类的菜单居中

javascript - 我的 jQuery 语法在这里错了吗?

javascript - 解析电子商务数据以推送到 Google 标签管理器的数据层

javascript - 动态下拉如何使用 css 显示成功(抽动图标)

jquery - 解析json树结构

html - @Html.EditorFor 中的属性 css