You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Get all `<tr>`, like `table.querySelectorAll('tr')`, then make an array from them, cause we need array methods.
15
-
2. The first TR (`table.rows[0]`) is actually a table header, so we take the rest by `.slice(1)`.
16
-
3. Then sort them comparing by the content of the first `<td>` (the name field).
17
-
4. Now insert nodes in the right order by `.append(...sortedRows)`.
18
-
19
-
Tables always have an implicit `<tbody>` element, so we must insert into it as `table.tBodes[0].append(...)`: a simple `table.append(...)` would fail.
13
+
1. Get all `<tr>`, from `<tbody>`.
14
+
2. Then sort them comparing by the content of the first `<td>` (the name field).
15
+
3. Now insert nodes in the right order by `.append(...sortedRows)`.
20
16
21
17
Please note: we don't have to remove row elements, just "re-insert", they leave the old place automatically.
22
18
23
-
P.S. This solution assumes that the table doesn't have multple `<tbody>` (the common case). In case it does, we can modify the code accordingly: take rows only from the needed `<tbody>` in step `(1)` and insert them in that `<tbody>` step `(4)`.
19
+
Also note: even if the table HTML doesn't have `<tbody>`, the DOM structure always has it. So we must insert elements as `table.tBodes[0].append(...)`: a simple `table.append(...)` would fail.
0 commit comments