亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuery:如何獲取具有自定義標頭值的表的 JSON 數據

jQuery:如何獲取具有自定義標頭值的表的 JSON 數據

藍山帝景 2023-11-02 22:21:10
jQuery:如何獲取具有自定義標頭值的表數據的 JSON 數據。有一張表,需要將整個表數據轉換為json格式數據?,F在我嘗試替換 json 數據中插入實際表頭的標頭數組(自定義標頭)。我嘗試用下面的代碼替換原始的表頭$headers =["ID", "ABC", "XYZ","Test"]; ,預期輸出:[{"ID":"22222","ABC":"test5","XYZ":"3000","":"abc"},{"ID":"3333","ABC":"test1","XYZ":"1000","":"erf"},{"ID":"44444","ABC":"test2","XYZ":"2000","":"sde"},{"ID":"55555","ABC":"test3","XYZ":"3000","":"fre"}]小提琴$(document).ready(function() {  $("#getJsondata").click(function() {    var jsonData1 = [];    var matchId = 1234;    var $headers = $("#firstTable").find("th:eq(0),th:eq(1),th:eq(2)");    //var $headers =["ID", "ABC", "XYZ","Test"];    var $rows = $("#firstTable").find("tbody tr")      .each(function(index) {        const $cells = $(this).closest("tr").find("td:eq(0),td:eq(1),td:eq(2),td:eq(3)");        jsonData1[index] = {};        $cells.each(function(cellIndex) {          jsonData1[index][$($headers[cellIndex]).text()] = $(this).text();        });      });    alert(JSON.stringify(jsonData1));  });});td {  border: 1px solid black;}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><table class="multipleData" style="border:1px solid black;" id="firstTable">  <thead style="background:grey;">    <tr>      <th>Header1</th>      <th>Header2</th>      <th>Header3</th>      <th>Header4</th>      <th>Header5</th>      <th>Header6</th>    </tr>  </thead>  <tbody>    <tr style="border:1px solid black">      <td>22222</td>      <td>test5</td>      <td>3000</td>      <td>abc</td>      <td>22222</td>      <td>Y</td>    </tr>    <tr style="border:1px solid black">      <td>3333</td>      <td>test1</td>      <td>1000</td>      <td>erf</td>      <td>22222</td>      <td>Y</td>    </tr>    <tr style="border:1px solid black">      <td>44444</td>      <td>test2</td>      <td>2000</td>      <td>sde</td>      <td>22222</td>      <td>Y</td>    </tr>
查看完整描述

2 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

您可以獲取td索引,并根據此獲取 該索引處的值,并將相同的值推送到JSON 數組$headers內。我已經使用(更少),因為只有 4 個標頭值,如果您需要所有 tds 值,您可以刪除它:lt


演示代碼:


$(document).ready(function() {

  $("#getJsondata").click(function() {

    var jsonData1 = [];

    var $headers = ["ID", "ABC", "XYZ", "Test"];

    $("#firstTable").find("tbody tr").each(function(index) {

      var values = {}; //create obj

      //loop through tr > td only < 4

      $(this).find("td:lt(4)").each(function(index) {

        values[$headers[index]] = $(this).text(); //add values 

      })

      jsonData1.push(values) //push in array

    });

    alert(JSON.stringify(jsonData1));

  });

});

td {

  border: 1px solid black;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table class="multipleData" style="border:1px solid black;" id="firstTable">

  <thead style="background:grey;">

    <tr>

      <th>Header1</th>

      <th>Header2</th>

      <th>Header3</th>

      <th>Header4</th>

      <th>Header5</th>

      <th>Header6</th>

    </tr>

  </thead>

  <tbody>

    <tr style="border:1px solid black">

      <td>22222</td>

      <td>test5</td>

      <td>3000</td>

      <td>abc</td>

      <td>22222</td>

      <td>Y</td>

    </tr>

    <tr style="border:1px solid black">

      <td>3333</td>

      <td>test1</td>

      <td>1000</td>

      <td>erf</td>

      <td>22222</td>

      <td>Y</td>

    </tr>

    <tr style="border:1px solid black">

      <td>44444</td>

      <td>test2</td>

      <td>2000</td>

      <td>sde</td>

      <td>22222</td>

      <td>Y</td>

    </tr>

    <tr style="border:1px solid black">

      <td>55555</td>

      <td>test3</td>

      <td>3000</td>

      <td>fre</td>

      <td>22222</td>

      <td>Y</td>

    </tr>

  </tbody>

</table>


<button id="getJsondata" type="button">

   GetJsonData

</button>


查看完整回答
反對 回復 2023-11-02
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

這似乎做你想做的


const headers = ["ID", "ABC", "XYZ", "Test"];

$(function() {

  $("#getJsondata").on("click", function() {

    const data = [];

    $("#firstTable").find("tbody tr").each(function() {

         data.push({})

         $(this).find("td").map(function(i) {

          return this.textContent;

        }).get()      // get the array of all cell contents

        .slice(0, -2) // get rid of the last two

        .forEach((text,i) => data[data.length-1][headers[i]] = text) // add to the object

      })

    console.log(JSON.stringify(data));

  });

});

td {

  border: 1px solid black;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table class="multipleData" style="border:1px solid black;" id="firstTable">

  <thead style="background:grey;">

    <tr>

      <th>Header1</th>

      <th>Header2</th>

      <th>Header3</th>

      <th>Header4</th>

      <th>Header5</th>

      <th>Header6</th>

    </tr>

  </thead>

  <tbody>

    <tr style="border:1px solid black">

      <td>22222</td>

      <td>test5</td>

      <td>3000</td>

      <td>abc</td>

      <td>22222</td>

      <td>Y</td>

    </tr>

    <tr style="border:1px solid black">

      <td>3333</td>

      <td>test1</td>

      <td>1000</td>

      <td>erf</td>

      <td>22222</td>

      <td>Y</td>

    </tr>

    <tr style="border:1px solid black">

      <td>44444</td>

      <td>test2</td>

      <td>2000</td>

      <td>sde</td>

      <td>22222</td>

      <td>Y</td>

    </tr>

    <tr style="border:1px solid black">

      <td>55555</td>

      <td>test3</td>

      <td>3000</td>

      <td>fre</td>

      <td>22222</td>

      <td>Y</td>

    </tr>

  </tbody>

</table>


<button id="getJsondata" type="button">

   GetJsonData

</button>


查看完整回答
反對 回復 2023-11-02
  • 2 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號