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;
    }


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

    // "dI" == "documentIterator"
    function dI_(dt, f) {
        if (dt == null) {return;}
        eD(dt, f);
        ifs_( dt.getElementsByTagName("FRAME") );
        ifs_( dt.getElementsByTagName("IFRAME") );
    }

    // iterate through all documents
    dI_(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 + ".");
})();