DOM HTMLTableElement
экземпляры имеют свойство rows
, которое представляет собой набор строк в таблице.
Нет необходимости для идентификаторов. Просто:
const tables = $(".wikitable");
const rowsPerTable = tables.map((_, table) => table.rows.length).get();
Live Пример:
const tables = $(".wikitable");
const rowsPerTable = tables.map((_, table) => table.rows.length).get();
console.log(rowsPerTable);
.wikitable {
border: 1px solid #ddd;
margin-bottom: 4px;
}
<table class="wikitable">
<tbody>
<tr><td>Just one row</td></tr>
</tbody>
</table>
<table class="wikitable">
<tbody>
<tr><td>Two rows...</td></tr>
<tr><td>...in this one</td></tr>
</tbody>
</table>
<table class="wikitable">
<tbody>
<tr><td>Five</td></tr>
<tr><td>rows</td></tr>
<tr><td>in</td></tr>
<tr><td>this</td></tr>
<tr><td>one</td></tr>
</tbody>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Возвращает массив чисел, где каждое число - это число строк в эквивалентной таблице в tables
. Вот как это работает:
- jQuery's
map
вызывает свой обратный вызов с индексом элемента и элемента. Мы не используем индекс (поэтому я назвал его _
), но мы используем элемент.
- В обратном вызове мы используем свойство
rows
.
- Поскольку jQuery
map
возвращает объект jQuery, мы используем get()
для получения необработанного массива.
Или, если вы хотите объединить идентификаторы вашей таблицы, начиная с 4, и количество строк, возможно, как объекты:
const tables = $(".wikitable");
const rowsPerTable = tables.map((index, table) => ({id: index + 4, count: table.rows.length})).get();
Live Пример:
const tables = $(".wikitable");
const rowsPerTable = tables.map((index, table) => ({id: index + 4, count: table.rows.length})).get();
console.log(rowsPerTable);
.wikitable {
border: 1px solid #ddd;
margin-bottom: 4px;
}
<table class="wikitable">
<tbody>
<tr><td>Just one row</td></tr>
</tbody>
</table>
<table class="wikitable">
<tbody>
<tr><td>Two rows...</td></tr>
<tr><td>...in this one</td></tr>
</tbody>
</table>
<table class="wikitable">
<tbody>
<tr><td>Five</td></tr>
<tr><td>rows</td></tr>
<tr><td>in</td></tr>
<tr><td>this</td></tr>
<tr><td>one</td></tr>
</tbody>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Некоторые люди не любят полагаться на это свойство, хотя оно универсально поддерживается и является частью стандарта. Если вы этого не сделаете, вы можете использовать вместо таблицы querySelectorAll
:
const tables = $(".wikitable");
const rowsPerTable = tables.map((_, table) => table.querySelectorAll("tr").length).get();