0

多数の colspan を持つ大きなテーブルで最大数のセルを検索する効率的な方法は何ですか (セルのマージ ** colspan は無視する必要があるため、以下の例では最初の行のセルの最大数は 4 です)。reg 式を使用した js/jquery ですか、それともバブル ソートを使用したループだけですか。以下のように、正規表現の使用を説明するリンクが1つありましたが、それは理想的な方法です...誰かがこれの疑似コードを提案できますか。

jquery regex パッチによる高い CPU 消費

<table width="156" height="84" border="0" >
    <tbody>
        <tr style="height:10px">
            <td width="10" style="width:10px; height:10px"/>
            <td width="10" style="width:10px; height:10px"/>
            <td width="10" style="width:10px; height:10px"/>
            <td width="10" style="width:10px; height:10px"/>
        </tr>
        <tr style="height:10px">
            <td width="10" style="width:10px; height:10px" colspan="2"/>
            <td width="10" style="width:10px; height:10px"/>
            <td width="10" style="width:10px; height:10px"/>
        </tr>
        <tr style="height:10px">
            <td width="10" style="width:10px; height:10px"/>
            <td width="10" style="width:10px; height:10px"/>
            <td width="10" style="width:10px; height:10px" colspan="2"/>
        </tr>
        <tr style="height:10px">
            <td width="10" style="width:10px; height:10px" colspan="2"/>
            <td width="10" style="width:10px; height:10px"/>
            <td width="10" style="width:10px; height:10px"/>
        </tr>
    </tbody>
</table>
4

2 に答える 2

3
var rowWithMaxCells = $("tr").get().reduce(function(a, b) {
    return a.children.length > b.children.length ? a : b;
});

console.log(rowWithMaxCells);

編集

function getRowWithMaxCells(table) {
    var rows = table.getElementsByTagName("tr"),
        i = rows.length,
        maxIdx = -Infinity,
        curMax = -Infinity;

    while (i--) {
        if (curMax <= rows[i].children.length) {
            curMax = rows[i].children.length;
            maxIdx = i;
        }
    }

    return rows[maxIdx];
}

完全を期すために、すべてのブラウザで動作するバージョン:)

于 2012-09-18T20:49:36.540 に答える
0

document.querySelectorを使用して、この問題に取り組みます。

./tr/td[index]単純なループを実行して、として返されるまで探しますnull。次に、最大はindex-1

.getElementsByTagNameで同様のことができます。

于 2012-09-18T21:04:37.790 に答える