Home

Table Stats

Source code for bookmarklet Table Stats.



javascript:
(function(){
    
    function hasAttribute(e, a)
    {
        return e.hasAttribute(a);
    }


    var table_count = 0;
    var row_count = 0;
    var cell_count = 0;
    var sum_count = 0;

    function handle_table( tba )
    {
        for (var i=0, ln=tba.length; i < ln; ++i)
        {
            tb = tba[i];
            if (hasAttribute(tb, "SUMMARY"))
            {
                ++sum_count;
            }
        }
    }

    function eD(dt, f)
    {
        var tba = dt.getElementsByTagName("TABLE");
        handle_table( tba );
        table_count += tba.length;
        row_count += dt.getElementsByTagName("TR").length;
        cell_count += dt.getElementsByTagName("TD").length;
    }


    // "dIr" == "documentIterator"
    function dIr(dt, f) {
        function ifsr( fs )
        {
            for (var i = 0; i < fs.length; ++i)
            {
                try {
                    dIr(fs[i].contentDocument, fs[i]); // recursive call
                }
                catch (e) {
                    alert(e || "Unspecified error");
                }
            }
        }

        if (dt == null) {return;}
        eD(dt, f);
        ifsr( dt.getElementsByTagName("FRAME") );
        ifsr( dt.getElementsByTagName("IFRAME") );
    }

    // iterate through all documents
    dIr(document, null);

    var st = "Tables: " + table_count;
        if (table_count > 0)
        {
            st += " (Rows: " + row_count
            +     ", cells: " + cell_count
            + ")"
            ;

            st += " Lacking summary: " + (table_count - sum_count);
        }
    alert(st + ".");
}());