【问题标题】:How to slide rows in table?如何在表格中滑动行?
【发布时间】:2015-03-29 20:04:11
【问题描述】:

我有这个表格和下面的脚本。主要思想是每 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);

});

我想在一张幻灯片上显示前三行...然后是后两行

【问题讨论】:

  • When i use this script data get crazy - 这是一个非常模糊的错误描述。
  • 它们只显示一行,然后什么也没有

标签: javascript jquery


【解决方案1】:

首先修复 HTML 以将 &lt;tbody&gt;&lt;/tbody&gt; 标记放在循环之外,否则每行只有一个 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

【讨论】:

  • 它不工作,而且我想在一张幻灯片上显示 3 行......然后在第二张幻灯片上显示其余部分......在这种情况下,这是 2 行 test4 和 test5
  • 好的,我又修改了代码并添加了一个演示。
  • 只有一个问题...是否可以动态执行此操作...例如,如果将元素数量增加到 9,我得到 3 行幻灯片 3 次?这样我就可以将 1,2,3 滑到 4,5,6 滑到 7,8,9 ??
  • 是的,这是可能的,尽管代码在某些方面会有所不同。例如,state 可能需要是整数而不是布尔值,selectors 需要动态生成。完全采用不同的方法可能更简单。试一试,如果遇到困难,请发布另一个问题。
【解决方案2】:

您的 for 循环位于表格主体之外,因此您最终会得到 i 数量具有相同 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>

【讨论】:

  • 我可以每页显示 3 行吗?像 1 1 1 2 2 2 3 3 3 然后在 4 4 4 5 5 5 .....如果你明白我的意思吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 2014-01-16
  • 1970-01-01
相关资源
最近更新 更多