删除行后重新排序表号序列

时间:2014-05-22 19:31:33

标签: javascript jquery html-table

我需要你的帮助,并且想知道是否可以根据表格中的总数表行数重新编号第一个表格列。

问题是这样,一旦按下一个按钮就删除了一行,第一个左表列现在不是一个有组织的方式。

因此,我想知道是否可以废弃数字并相应地重新编号左列(如果删除了行,就像MS Excel的行为一样)。

我是jQuery友好的:)

以下是HTML标记:

<!DOCTYPE html>

<html>

<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

<style type="text/css">

.highlight {

    background-color: rgb(255,0,0);

}

</style>

<script type="text/javascript">

window.onload = function() {

var rowCount = $('#data >tbody >tr').length;
$("#maxrows").val(rowCount);

    var $tbody = $("#data tbody").on('click', 'tr', function() {
            highlight($(this));
    });


    $('#goto_first').click(function() {
        var $first = $tbody.find('tr').first();
            highlight($first);
    });

    $('#goto_prev').click(function() {
        var $prev = $tbody.find('.highlight').prev();
            highlight($prev);
    });


    $('#goto_next').click(function() {
        var $next = $tbody.find('.highlight').next();
            highlight($next);
    });

    $('#goto_last').click(function() {
        var $last = $tbody.find('tr').last();
            highlight($last);
    });

    $('#goto_row').click(function() {

        var $row = prompt("Enter row number")

        highlight($("#data tr").eq($row));

    });

    $('#remove_row').click(function() {

        var $row = $tbody.find('.highlight')

        $row.remove();

    });


    function highlight($row) {
            if ($row.length) {
                $tbody.children().removeClass("highlight");
                $row.addClass('highlight');
                $("#rownum").val($row[0].rowIndex);
            }
    }

}
</script>

</head>

<body>

<table id="data" border="1" cellspacing="1" cellpadding="1">

    <thead>
        <tr>
            <th>#</th>
            <th>header2</th>
            <th>header3</th>
            <th>header4</th>
            <th>header5</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
        </tr>
        <tr>
            <td>2</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
        </tr>
        <tr>
            <td>3</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
        </tr>
        <tr>
            <td>4</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
        </tr>
        <tr>
            <td>5</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
        </tr>
        <tr>
            <td>6</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
            <td>data</td>
        </tr>
    </tbody>
</table>
Row Number:
<br>
<input type="text" id="rownum" readonly><br>
of
<br>
<input type="text" id="maxrows" readonly>
<br>
<input type="button" id="goto_first" value="first">
<input type="button" id="goto_prev" value="prev">
<input type="button" id="goto_next" value="next">
<input type="button" id="goto_last" value="last">
<input type="button" id="goto_row" value="goto row">
<input type="button" id="remove_row" value="remove row">

</body>
</html>

2 个答案:

答案 0 :(得分:2)

你可以这样做:

$('#remove_row').click(function () {
    var $row = $tbody.find('.highlight')
    $row.remove();
    renumberRows();
});

function renumberRows() {
    $('#data tr').each(function(index, el){
        $(this).children('td').first().text(index++);
    });
}

你可以在这里找到一个有效的例子:Fiddle

答案 1 :(得分:0)

不确定四年后我如何偶然发现这个老问题,但这似乎是CSS计数器的一个很好的用例-这样就不需要JS,因为内容随着数字的变化而更新。只需在每行的数字单元格中添加一个类,然后使用一些漂亮的CSS便可以使它非常灵活:

更新的表格行HTML:

<tr>
  <td class="row-number"></td>
  <td>data</td>
  <td>data</td>
  <td>data</td>
  <td>data</td>
</tr>

CSS:

tbody {
  counter-reset: row-counter;
}
tr {
  counter-increment: row-counter;
}
td.row-number:before {
  content: counter(row-counter);
} 

工作示例: https://codepen.io/anon/pen/gjXRmW