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 + ".");
}());