src/audits/TableHasAppropriateHeaders.js
function tableDoesNotHaveGridLayout(rows) {
        var headerCells = rows[0].children;

        for (var i = 1; i < headerCells.length; i++) {
            if (headerCells[i].tagName != 'TH') {
                return true;
            }
        }

        for (var i = 1; i < rows.length; i++) {
            if (rows[i].children[0].tagName != 'TH') {
                return true;
            }
        }
        return false;
    }
function tableDoesNotHaveGridLayout(rows) {
        var headerCells = rows[0].children;

        for (var i = 1; i < headerCells.length; i++) {
            if (headerCells[i].tagName != 'TH') {
                return true;
            }
        }

        for (var i = 1; i < rows.length; i++) {
            if (rows[i].children[0].tagName != 'TH') {
                return true;
            }
        }
        return false;
    }
function tableDoesNotHaveGridLayout ( rows ) { var headerCells = rows [ 0 ] . children ; for ( var i = 1 ; i < headerCells . length ; i ++ ) { if ( headerCells [ i ] . tagName != 'TH' ) { return true ; } } for ( var i = 1 ; i < rows . length ; i ++ ) { if ( rows [ i ] . children [ 0 ] . tagName != 'TH' ) { return true ; } } return false ; }
Checks whether a table has grid layout with both row and column headers.

@param {NodeList} rows tr elements
@returns {boolean} Table does not have a complete grid layout
Checks whether a table has grid layout with both row and column headers .