0

こちらのデモをご覧ください。http://jsfiddle.net/wgstudio/CqNfZ/2/

html talbeでcell(0,0)とcell(1,0)をマージしたいのですが、これは通常のテーブルで機能します。

コードは以下のとおりです。

        function() {
            var table = $("#table1");

            var rowIndex = 0;
            var colIndex = 0;                
            var actionCell =$($(table.children().children()[rowIndex]).children()[colIndex]); //Cell1
            var tr = table.children().children()[rowIndex + 1]; 
            var toBeRemoved = $($(tr).children()[colIndex]);//Cell4
            toBeRemoved.remove();
            rowSpan = toBeRemoved.attr("rowSpan") == undefined ? 1 : parseInt(toBeRemoved.attr("rowSpan"), 10);
            actionCell.attr("rowspan", (actionCell.attr("rowSpan") == undefined ? 1 : parseInt(actionCell.attr("rowSpan"), 10)) + rowSpan);
        }

しかし、テーブルが次のような場合:

    <table id="table2" style=" width: 100%;">
        <tr>
            <td rowspan="2">cell_1</td>
            <td rowspan="2">cell_2cell_5</td>
            <td>cell_3</td>
        </tr>
        <tr>
            <td>cell_6</td>
        </tr>
        <tr>
            <td>cell_7</td>
            <td>cell_8</td>
            <td>cell_9</td>
        </tr>
    </table>

(0,0)(0,1)はマージされたセルですが、(0,0) "Cell1"と(2,0) "Cell7"をマージしたい場合、jsコードで "cell 7"を見つけるにはどうすればよいですか?

私がそれを明確に説明することを望みます。

どうもありがとうございます。

明細書

4

1 に答える 1

0

発生している主な問題は、行スパンがセルに追加されると、行のインデックス作成が破棄されることです。行のセルに同じ列の次のセルのが含まれrowspan=3ている場合は。row indexcurrentRowIndex + 3

これがあなたが必要とするもののためのかなり良いスタートです。

$("#button2").click(function() {
    /* hard code a cell to start with*/
    var actionCell = $('td:first');

    var toBeRemoved = findNextCell(actionCell);

    combineSpans( actionCell, toBeRemoved)

    /* remove merged*/
    toBeRemoved.remove();

});

function combineSpans( actionCell, toBeRemoved){
    var actionSpans = getCellSpans(actionCell);
    var nextSpans = getCellSpans(toBeRemoved);
    /* add colspan and rowspan for both cells to apply to actionCell*/
    var newSpans = {
        rowspan: actionSpans.rowSpan + nextSpans.rowSpan,
        colspan: actionSpans.colSpan + nextSpans.colSpan
    }
     /* adjust actionCell colspan/rowspan*/
    actionCell.attr(newSpans);

}

function findNextCell($cell) {

    var cellIndex = $cell.index();
    var rowSpan = $cell.attr("rowspan") || 1;
    var rowIndex = $cell.closest('tr').index();
    var nextRow = $cell.closest('table').find('tr').eq(1 * rowSpan + rowIndex);
    return nextRow.find('td').eq(cellIndex);

}


function getCellSpans($cell) {
    var obj = {}
    obj.rowSpan = parseInt($cell.attr("rowspan") || 1, 10);
    obj.colSpan = parseInt($cell.attr("colspan") || 1, 10);
    return obj;

}

デモ:http://jsfiddle.net/CqNfZ/7/

編集combineSpans:私のロジックを変更する必要があることに気づきました。2つのセルcolspanを一緒に追加すると問題が発生します

于 2012-12-25T17:15:21.303 に答える