User:Timeshifter/Sandbox34

From Wikipedia, the free encyclopedia
Note: This JS no longer seems to be working here.
See also: User:Timeshifter/Sandbox33

Automatic row numbering. Not fixed if sortable table[edit]

Testing class="wikitable autonumber"

User:Timeshifter/vector.js. I copied the JS from here: User:Mike Dillon/Scripts/autonumber.js

Discussion:

The number column on the left is autogenerated.

Name Date
John April 1, 2007
Dick April 2, 2007
Harry April
{| class="wikitable autonumber"
! Name
! Date
|-
| John
| April 1, 2007
|-
| Dick
| April 2, 2007
|-
| Harry
| April
|}

Unfortunately, the number order is not a fixed order when used with the sortable class:
class="wikitable autonumber sortable"

Name Date
John April 1, 2007
Dick April 2, 2007
Harry April
{| class="wikitable autonumber sortable"
! Name
! Date
|-
| John
| April 1, 2007
|-
| Dick
| April 2, 2007
|-
| Harry
| April
|}

Removed from my JS page[edit]

User:Timeshifter/vector.js


/* Autonumber tables */
/* Script for testing. See sandbox notes. */
/* https://en.wikipedia.org/wiki/User:Timeshifter/Sandbox34 */
/* https://en.wikipedia.org/wiki/User:Mike_Dillon/Scripts/autonumber.js */
 
addOnloadHook(function () {
    function firstCell(row) {
        for (var n in row.childNodes) {
            var c = row.childNodes[n];
            if (/^t[dh]$/i.test(c.tagName)) return c;
        }
    }
 
    var tables = getElementsByClassName(document.getElementById("bodyContent"), "table", "autonumber");
    for (var n in tables) {
        var t = tables[n];
 
        var rownum = 1;
        for (var m = 0; m < t.rows.length; m++) {
            var r = t.rows[m];
 
            var c = firstCell(r);
            if (!c) continue;
 
            var newCell;
            if (c.tagName.toLowerCase() == "th") {
                newCell = document.createElement("th");
                newCell.appendChild(document.createTextNode("#"));
                rownum = 1; // Renumber if a header row is seen
            } else {
                newCell = document.createElement("td");
                newCell.appendChild(document.createTextNode(rownum));
                rownum += 1;
            }
            newCell.setAttribute("class", "autonumber-cell");
            r.insertBefore(newCell, r.firstChild);
        }
    }
});