Home > Web Front-end > JS Tutorial > body text

How to Sort HTML Tables with JavaScript: A Comprehensive Solution

Barbara Streisand
Release: 2024-10-20 22:22:02
Original
212 people have browsed it

How to Sort HTML Tables with JavaScript: A Comprehensive Solution

Sorting HTML Tables with JavaScript: A Simple Solution Revisited

Finding a suitable table sorting solution in JavaScript can be a challenge. You may need to sort columns alphabetically, including numbers, but without ignoring specific characters or handling currency.

Fortunately, there's a straightforward and effective JavaScript solution that can help:

Plain JavaScript (ES6):

  • Supports both alpha and numeric sorting in ascending and descending order
  • Works in Chrome, Firefox, Safari, and even IE11

Implementation Details:

  1. Add a click event listener to each table header cell (th).
  2. Retrieve all table rows (except the first one) for the table.
  3. Sort the rows based on the value of the clicked column.
  4. Reinsert the sorted rows back into the table.

Code Snippet:

<code class="javascript">const getCellValue = (tr, idx) => tr.children[idx].innerText || tr.children[idx].textContent;

const comparer = (idx, asc) => (a, b) => ((v1, v2) => 
    v1 !== '' &amp;&amp; v2 !== '' &amp;&amp; !isNaN(v1) &amp;&amp; !isNaN(v2) ? v1 - v2 : v1.toString().localeCompare(v2)
    )(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx));

document.querySelectorAll('th').forEach(th => th.addEventListener('click', (() => {
    const table = th.closest('table');
    Array.from(table.querySelectorAll('tr:nth-child(n+2)'))
        .sort(comparer(Array.from(th.parentNode.children).indexOf(th), this.asc = !this.asc))
        .forEach(tr => table.appendChild(tr) );
})));</code>
Copy after login

Styling:

Add the following CSS to style the table and make the header cells clickable:

<code class="css">table, th, td {
    border: 1px solid black;
}
th {
    cursor: pointer;
}</code>
Copy after login

Usage:

Include the JavaScript and CSS in your HTML document and add a table with header cells and data rows.

Example:

<code class="html"><table>
    <tr><th>Country</th><th>Date</th><th>Size</th></tr>
    <tr><td>France</td><td>2001-01-01</td><td><i>25</i></td></tr>
    <tr><td><a href="#">spain</a></td><td><i>2005-05-05</i></td><td></td></tr>
    <tr><td><b>Lebanon</b></td><td><a href="#">2002-02-02</a></td><td><b>-17</b></td></tr>
    <tr><td><i>Argentina</i></td><td>2005-04-04</td><td><a href="#">100</a></td></tr>
    <tr><td>USA</td><td></td><td>-6</td></tr>
</table></code>
Copy after login

Conclusion:

With this simple and efficient JavaScript solution, you can easily sort HTML tables with a click of a column header, regardless of the data type.

The above is the detailed content of How to Sort HTML Tables with JavaScript: A Comprehensive Solution. For more information, please follow other related articles on the PHP Chinese website!

source:php
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template