Title: Trying to sort html table with javascript on page
Last modified: November 27, 2019

---

# Trying to sort html table with javascript on page

 *  Resolved [sfklaas](https://wordpress.org/support/users/sfklaas/)
 * (@sfklaas)
 * [6 years, 6 months ago](https://wordpress.org/support/topic/trying-to-sort-html-table-with-javascript-on-page/)
 * WP Newbie here… I am trying to make a sort-able html table with javascript. And
   when searching how to do it, I came across this link from w3schools:([https://www.w3schools.com/howto/howto_js_sort_table.asp](https://www.w3schools.com/howto/howto_js_sort_table.asp)).
 * I just tried copying and pasting the code to my page to see if it works, but 
   it only displays the table without having the clickable headings to sort. I also
   noticed when I use the “code editor” when editing the WP page in dashboard, some
   of the code scripts disappear when updating the page. Shouldn’t I just be able
   to copy and paste this code into my page and it should work? thanks for your 
   help!
 * The code I am trying to add:
 *     ```
       <html>
       <head>
       <title>Sort a HTML Table Alphabetically</title>
       <style>
       table {
         border-spacing: 0;
         width: 100%;
         border: 1px solid #ddd;
       }
   
       th {
         cursor: pointer;
       }
   
       th, td {
         text-align: left;
         padding: 16px;
       }
   
       tr:nth-child(even) {
         background-color: #f2f2f2
       }
       </style>
       </head>
       <body>
   
       <p><strong>Click the headers to sort the table.</strong></p>
       <p>The first time you click, the sorting direction is ascending (A to Z).</p>
       <p>Click again, and the sorting direction will be descending (Z to A):</p>
   
       <table id="myTable">
         <tr>
          <!--When a header is clicked, run the sortTable function, with a parameter, 0 for sorting by names, 1 for sorting by country:-->  
           <th onclick="sortTable(0)">Name</th>
           <th onclick="sortTable(1)">Country</th>
         </tr>
         <tr>
           <td>Berglunds snabbkop</td>
           <td>Sweden</td>
         </tr>
         <tr>
           <td>North/South</td>
           <td>UK</td>
         </tr>
         <tr>
           <td>Alfreds Futterkiste</td>
           <td>Germany</td>
         </tr>
         <tr>
           <td>Koniglich Essen</td>
           <td>Germany</td>
         </tr>
         <tr>
           <td>Magazzini Alimentari Riuniti</td>
           <td>Italy</td>
         </tr>
         <tr>
           <td>Paris specialites</td>
           <td>France</td>
         </tr>
         <tr>
           <td>Island Trading</td>
           <td>UK</td>
         </tr>
         <tr>
           <td>Laughing Bacchus Winecellars</td>
           <td>Canada</td>
         </tr>
       </table>
   
       <script>
       function sortTable(n) {
         var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
         table = document.getElementById("myTable");
         switching = true;
         //Set the sorting direction to ascending:
         dir = "asc"; 
         /*Make a loop that will continue until
         no switching has been done:*/
         while (switching) {
           //start by saying: no switching is done:
           switching = false;
           rows = table.rows;
           /*Loop through all table rows (except the
           first, which contains table headers):*/
           for (i = 1; i < (rows.length - 1); i++) {
             //start by saying there should be no switching:
             shouldSwitch = false;
             /*Get the two elements you want to compare,
             one from current row and one from the next:*/
             x = rows[i].getElementsByTagName("TD")[n];
             y = rows[i + 1].getElementsByTagName("TD")[n];
             /*check if the two rows should switch place,
             based on the direction, asc or desc:*/
             if (dir == "asc") {
               if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
                 //if so, mark as a switch and break the loop:
                 shouldSwitch= true;
                 break;
               }
             } else if (dir == "desc") {
               if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
                 //if so, mark as a switch and break the loop:
                 shouldSwitch = true;
                 break;
               }
             }
           }
           if (shouldSwitch) {
             /*If a switch has been marked, make the switch
             and mark that a switch has been done:*/
             rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
             switching = true;
             //Each time a switch is done, increase this count by 1:
             switchcount ++;      
           } else {
             /*If no switching has been done AND the direction is "asc",
             set the direction to "desc" and run the while loop again.*/
             if (switchcount == 0 && dir == "asc") {
               dir = "desc";
               switching = true;
             }
           }
         }
       }
       </script>
   
       </body>
       </html>
       ```
   
 * The page I need help with: _[[log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fwordpress.org%2Fsupport%2Ftopic%2Ftrying-to-sort-html-table-with-javascript-on-page%2F%3Foutput_format%3Dmd&locale=en_US)
   to see the link]_

Viewing 2 replies - 1 through 2 (of 2 total)

 *  Thread Starter [sfklaas](https://wordpress.org/support/users/sfklaas/)
 * (@sfklaas)
 * [6 years, 6 months ago](https://wordpress.org/support/topic/trying-to-sort-html-table-with-javascript-on-page/#post-12182305)
 * Not sure if this was the proper way, but I got it working by adding the “scripts
   n styles” plugin and copied/pasted the code above in the “Scripts” section and
   in the “html” section.
 *  Moderator [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * (@bcworkz)
 * [6 years, 6 months ago](https://wordpress.org/support/topic/trying-to-sort-html-table-with-javascript-on-page/#post-12182697)
 * I’m glad you found a solution!
 * FWIW, you cannot place script blocks within the WP page editor, as you have discovered.
   The editor’s parser corrupts scripts placed there. A script plugin is indeed 
   the easiest solution. Alternatives include adding script via shortcode, enqueuing
   script placed in an external file, or adding script into a custom page template.
 * For the benefit of anyone landing here via search as much as FYI 🙂

Viewing 2 replies - 1 through 2 (of 2 total)

The topic ‘Trying to sort html table with javascript on page’ is closed to new replies.

 * In: [Developing with WordPress](https://wordpress.org/support/forum/wp-advanced/)
 * 2 replies
 * 2 participants
 * Last reply from: [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * Last activity: [6 years, 6 months ago](https://wordpress.org/support/topic/trying-to-sort-html-table-with-javascript-on-page/#post-12182697)
 * Status: resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
