如何在具有多个表的树中找到 <td> 的最大计数-JS

use*_*234 2 javascript

我在 dom 树中有多个表,我想计算每个表中的单元格数。

代码:

function tree() {
    var table = document.getElementsByTagName('table');
    for (var p = 0, tr; tr= table[p]; p++) {
      for (var i =0, row; row = tr.rows[i]; i++) {
         console.log(row.cells.length)
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

控制台日志(树())

html:

<table>
   <tr>
            <td>First</td>
            <td>row</td>
        </tr>
        <tr>
            <td>and</td>
            <td>second</td>
        </tr>
</table>
<table>
   <tr>
            <td>First</td>
            <td>row</td>
        </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

第一个有 4 个单元格,第二个有 2 个单元格,我想打印出表格中计数最大的单元格。因此,o/p 将是:

4
Run Code Online (Sandbox Code Playgroud)

我上面的js代码,返回一个表中所有单元格的总长度。如何遍历树中的表格并找到最大的单元格数?

谢谢!

Tri*_*ych 5

使用querySelectorAll()来简化这一点。

以下代码将4在您的 OP 中输出。这是获得包含最多单元格的表格的简单修改,我怀疑这就是您的意思(尚不清楚)。

// Get your list of all tables in the document.
const tables = document.querySelectorAll('table');

// Map list of tables to list of number of <td> elements.
const lengths = 
  Array.from(tables)
    .map(table => table.querySelectorAll('td').length)

// Get the max of the list of lengths and log to console.
const max = Math.max(...lengths);
console.log(max);
Run Code Online (Sandbox Code Playgroud)
<table>
  <tr>
    <td>First</td>
    <td>row</td>
   </tr>
   <tr>
     <td>and</td>
     <td>second</td>
  </tr>
</table>
<table>
  <tr>
    <td>First</td>
    <td>row</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)