【问题标题】:Table rows not automatically scrolling. Script 1 scrolls, script 2 does not scroll. Why?表格行不会自动滚动。脚本 1 滚动,脚本 2 不滚动。为什么?
【发布时间】:2017-08-16 09:16:22
【问题描述】:

我删除了我的第一个问题,并重新编写了更多细节并添加了 jSfiddle domos。

我有一个脚本,它运行一个查询并返回数据,然后填充一个表。 表中的行自动循环滚动。所有这些都可以正常工作,并通过使用以下代码完成。但是,我需要做的是显示来自 JSON 调用的相同数据,从而启用自动屏幕更新,而无需刷新整个页面。我有这个工作 SCRIPT 2,但我无法工作的是工作的自动滚动 SCRIPT 1.

脚本 1这可行

<table id='table_scroll'>
<section id="section">
do { 
<div class='container'>
    <div class='clientname-text'><?php echo $row_conf['ClientName'];?></div>
    <div class='roomname-text'><?php echo $row_conf['RoomName'];?></div>
    <div class='time-text'><?php echo date("H:i", strtotime($row_conf['RoomFromTime'])) . " - " . date("H:i", strtotime($row_conf['RoomToTime']));?></div>
</div>
} while ($row_conf = mysqli_fetch_assoc($conf));  
</section>
</table>


$.fn.infiniteScrollUp=function(){
    var self=this,conf=self.children()
    setInterval(function(){
    conf.slice(10).hide();
        conf.filter(':hidden').eq(0).slideDown()
        conf.eq(0).slideUp(6000, "linear",function(){
        $(this).appendTo(self);
    conf=self.children();
      });
    },100)
    return this;
}


$(function(){
    $('section').infiniteScrollUp()
})

https://jsfiddle.net/Blackbox/b2dv6w3w/11/

我现在想使用通过 JSON 调用重新调整的数据来动态创建表。我已经使用以下代码完成了此操作。

SCRIPT 2 这不起作用K,谁能明白为什么?

<table id='table_scroll'>
<section id="section"></section>
</table>

$(document).ready(function() {
    function get_data() {
        $.getJSON("get_data_logos.php", function(json){
            json = json[0].data;
            var tr ;
            $('table').html("");
            for (var i = 0; i < json.length; i++) {
                tr = $('<tr/>');
                tr.css("border-bottom","2px solid #FFF");
                tr.append("<td width='33%'><div class='clientname-text'>" + json[i].ClientName + "</div></td>");
                tr.append("<td width='33%'><div class='roomname-text'>" + json[i].RoomName + "</div></td>");
                tr.append("<td width='33%'><div class='time-text'>" + json[i].RoomFromTime + " - " + json[i].RoomToTime + "</div></td>");
                $('table').append(tr);
            }
        });
    }
get_data();
setInterval(get_data,60000)
});

$.fn.infiniteScrollUp=function(){
    var self=this,conf=self.children()
    setInterval(function(){
    conf.slice(10).hide();
        conf.filter(':hidden').eq(0).slideDown()
        conf.eq(0).slideUp(6000, "linear",function(){
        $(this).appendTo(self);
    conf=self.children();
      });
    },100)
    return this;
}


$(function(){
    $('section').infiniteScrollUp()
})

我的问题是:我怎样才能让 SCRIPT 2 像在 SCRIPT 1 中那样使用滚动。

https://jsfiddle.net/Blackbox/dsm3dg55/30/

再次,非常感谢您抽出宝贵时间。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    您在发布的任何 sn-ps 中都没有使用该表。并且您的 getdata() 没有在任何地方定义。

    我所做的只是将您的 JSON 对象转换为 HTML,其余代码保持不变: https://jsfiddle.net/5k9wk6vj/

    $(function(){
    
      let $section = $('section');
      let clients = json[0].data;
    
      //json to html
      $.each(clients, function (key, client) {
        $section.append(
           "<div class='container'>" +
            "<div class='clientname-text'>" + client.ClientName + "</div>" +
            "<div class='roomname-text'>" + client.RoomName + "</div>" +
            "<div class='time-text'>" + client.RoomFromTime + " - " + client.RoomToTime + "</div>" +
          "</div>");
      });
    
      //start scrolling
      $section.infiniteScrollUp();
    }) 
    

    有可能使用 HTML 模板或类似的东西可以更清晰地构建 HTML,但这应该可以。

    【讨论】:

    • 您好,感谢您的回复。我将从生成 json 数组的外部 php 文件中提取数据。使用您的答案,我如何包含我的代码中的部分以触发 json 请求?此外,当我将您的答案加载到我的编辑器(Dreamweaver)中时,它会在 $(function(){ let $section = $('section'); // ERROR ON THIS LINE let clients = json[0].数据;
    • var 替换let 以消除错误(您的编辑器很可能不支持ES6,最新的java-script 规范)。使用 $.ajax() 向您的服务器发送请求(例如:stackoverflow.com/questions/15733972/…)。如果答案解决了您的问题,请务必标记为已解决。
    • 嗨,如果我需要添加一个额外的列来显示图像,我将如何编写代码行。我试过这样做:“
      " +.但这不起作用。它显示一个图像占位符,后面的路径看起来像“.mydomain.com/apps/conf/conf_images/boards/AshfieldHealthcare.png%3E%3C/div%3E%3Cdiv%20class="。谢谢你的帮助。解决此问题后,我可以将帖子标记为此类。
    • @DCJones,如果您的问题得到了回答,您应该将其标记为此类,如果您还有其他问题,您可以发布一个新问题。这会让您的问题对未来的搜索者更有用。
    • 点了。问题已被标记为已回答。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多