如何在表格中滑动行?

时间:2015-03-29 09:23:36

标签: javascript jquery

我有这个表和脚本。主要思想是每隔3秒更改表行中的数据...所以第一次它将是1,在3秒后它将是2,依此类推。当我使用这个脚本数据变得疯狂时(显示第一行,就是这样)。有人可以帮助我并告诉我需要改变什么吗?

HTML

 <table>

    <tr>
        <th>naslov1</th>
        <th>naslov2</th>
        <th>naslov3</th>
    </tr>


    @for (int i = 0; i < 5; i++)
    {
        <tbody id="tableslide">
            <tr>

                <td>test_@i</td>
                <td>test_@i</td>
                <td>test_@i</td>
            </tr>
        </tbody>
    }


</table>

的Javascript

<script>
    $(function () {
    $("#tableslide > tr:gt(0)").hide();

    setInterval(function () {

        $('#tableslide >tr:first')
          .slideToggle(1)
          //.fadeOut(300)
          .next()

          //.fadeIn(300)
          .slideToggle(1)
          .end()
          .appendTo('#tableslide');
</script>

    }, 3000);

});

我希望每张幻灯片显示前三行...然后显示第二行

2 个答案:

答案 0 :(得分:0)

你的for循环在你的桌子外面,所以你最终会得到一些具有相同id的表格。我想你想为每个循环迭代添加一行?

Here是一个在正确位置循环的小提琴(在示例中给出3行)

<tbody id="tableslide">
    @for (int i = 0; i < 5; i++)
    {
        <tr>
            <td>@i</td>
            <td>@i</td>
            <td>@i</td>
        </tr>
    }
</tbody>

答案 1 :(得分:0)

首先修复HTML以将<tbody></tbody>标记放在循环之外,否则每行有一个tbody。

<tbody id="tableslide">
@for (int i = 0; i < 5; i++) {
    <tr>
        <td>test_@i</td>
        <td>test_@i</td>
        <td>test_@i</td>
    </tr>
}
</tbody>

.slideUp().slideDown().slideToggle()无法在表格行上可靠地运行,但您可以使用.fadeOut().fadeIn(),如下所示:

$(function () {
    var selectors = [
        ":lt(3)",
        ":gt(2)"
    ];
    var $tableslide = $("#tableslide").children(selectors[1]).hide().end();
    var state = false;
    setInterval(function () {
        var s = state;
        $tableslide.children(selectors[+s]).fadeOut().promise().then(function () {
            $tableslide.children(selectors[+!s]).fadeIn();
        });
        state = !state;
    }, 3000);
});

<强> DEMO