第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用JS合并具有相同值的相鄰HTML表格單元格

使用JS合并具有相同值的相鄰HTML表格單元格

慕田峪9158850 2021-06-27 05:09:25
我一直在努力解決這個(gè)問(wèn)題。我有一個(gè)基于一些 JSON 數(shù)據(jù)自動(dòng)生成的表,這些數(shù)據(jù)可能會(huì)有所不同。我想合并第一列中具有相同值的相鄰單元格,例如此表中的“魚(yú)”和“鳥(niǎo)”:<table>  <tr>    <td>fish</td>    <td>salmon</td>  </tr>  <tr>    <td>fish</td>    <td>cod</td>  </tr>  <tr>    <td>fish</td>    <td>plaice</td>  </tr>  <tr>    <td>bird</td>    <td>robin</td>  </tr>  <tr>    <td>bird</td>    <td>crow</td>  </tr></table>理想情況下,我不想使用任何庫(kù),只想使用純 JS。這就是我希望它的樣子:table, tr, td {  border: solid 1px black;}<table>  <tr>    <td rowspan="3">fish</td>    <td>salmon</td>  </tr>  <tr>    <td>cod</td>  </tr>  <tr>    <td>plaice</td>  </tr>  <tr>    <td rowspan="2">bird</td>    <td>robin</td>  </tr>  <tr>    <td>crow</td>  </tr></table>我一直在尋找不同的方法來(lái)識(shí)別不同的值及其頻率,然后將行跨度更改為正確的數(shù)字,然后刪除其他單元格,但這些都在不同的用例中崩潰了。這是我到目前為止:let table = document.querySelector('table');let rowCount = 1;for (let i = 0; i < (table.rows.length - 1); i++) {  if (table.rows[i].cells[0].innerHTML === table.rows[i + 1].cells[0].innerHTML) {    rowCount++;  } else if (rowCount !== 1) {    table.rows[i].cells[0].setAttribute('rowspan', rowCount);    for (let j = (i - rowCount + 1); j < rowCount; j++) {      table.rows[j].cells[0].remove();    };    rowCount = 1;  };};table, tr, td {  border: solid 1px black;}<table>  <tr>    <td>fish</td>    <td>salmon</td>  </tr>  <tr>    <td>fish</td>    <td>cod</td>  </tr>  <tr>    <td>fish</td>    <td>plaice</td>  </tr>  <tr>    <td>bird</td>    <td>robin</td>  </tr>  <tr>    <td>bird</td>    <td>crow</td>  </tr></table>這根本不是我想要的,但我覺(jué)得我真的很接近!它試圖計(jì)算下面具有相同值的(第一列)單元格的數(shù)量,將此數(shù)字分配給最后一個(gè)相關(guān)單元格的行跨度,然后在循環(huán)返回以捕獲其余單元格之前刪除后續(xù)單元格。我希望我的最終代碼是這個(gè)的變體,所以有人可以告訴我我哪里出錯(cuò)了嗎?非常感謝!
查看完整描述

1 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

你確實(shí)很接近!

一種簡(jiǎn)化相當(dāng)多的方法是保留對(duì)當(dāng)前“標(biāo)題”單元格的引用,即您想要增加的單元格rowspan。這樣你根本不需要處理索引,產(chǎn)生一個(gè)非常簡(jiǎn)單的算法:

  • 對(duì)于每一行

    • headerCellrowSpan增加 1

    • 刪除firstCell

    • headerCell設(shè)置為firstCell

    • firstCell設(shè)置為行的第一個(gè)單元格

    • 如果這是第一行或firstCell的文本與headerCell的文本不同

    • 除此以外

在 JavaScript 中,它看起來(lái)像這樣:

const table = document.querySelector('table');


let headerCell = null;


for (let row of table.rows) {

  const firstCell = row.cells[0];

  

  if (headerCell === null || firstCell.innerText !== headerCell.innerText) {

    headerCell = firstCell;

  } else {

    headerCell.rowSpan++;

    firstCell.remove();

  }

}

table, tr, td {

  border: solid 1px black;

}

<table>

  <tr>

    <td>fish</td>

    <td>salmon</td>

  </tr>

  <tr>

    <td>fish</td>

    <td>cod</td>

  </tr>

  <tr>

    <td>fish</td>

    <td>plaice</td>

  </tr>

  <tr>

    <td>bird</td>

    <td>robin</td>

  </tr>

  <tr>

    <td>bird</td>

    <td>crow</td>

  </tr>

</table>


查看完整回答
反對(duì) 回復(fù) 2021-07-01
  • 1 回答
  • 0 關(guān)注
  • 239 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)