练习-实现一个异步评论和加载列表

需求:页面加载时,通过JSON数据渲染已有评论楼层;提供textarea输入框,点击回复按钮动态新增一行评论到列表。

真实项目一般通过AJAX请求后端接口获取数据库数据;本案例直接使用JS内置JSON数组模拟数据源。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm22.aspx.cs" Inherits="WebApplication1.WebForm22" %>
<html xmlns="[http://www.w3.org/1999/xhtml](http://www.w3.org/1999/xhtml)">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="[http://libs.baidu.com/jquery/1.8.3/jquery.min.js](http://libs.baidu.com/jquery/1.8.3/jquery.min.js)"></script>
    <script type="text/javascript">
        var data = [
            { "level": 1, "content": "明天去打羽毛球吗?", "time": "2017-6-14" },
            { "level": 2, "content": "去哪里 上面时候?", "time": "2017-6-24" },
            { "level": 3, "content": "体育馆吗?", "time": "2017-6-28" }
        ];

        $(function () {
            var tab = $("<table></table>");
            tab.attr("border", "1px");
            $("#list").append(tab);
            //遍历json数据源 data
            $.each(data, function () {
                //创建行
                var $tr = $("<tr></tr>");
                tab.append($tr);

                //创建列-单元格
                //楼层
                var $td = $("<td>" + this.level + "楼</td>");
                $tr.append($td);
                //内容
                $td = $("<td><p>" + this.content + "</p></td>");
                $tr.append($td);
                //日期
                $td = $("<td><span style='color:red'>" + this.time + "</span></td>");
                $tr.append($td);
            });
        });

        function doReply()
        {
            var $tab = $("table");
            var cont = $("#content").val();
            var level = $("tr").length + 1;

            //创建行
            var $tr = $("<tr></tr>");
            $tab.append($tr);

            //创建列-单元格
            //楼层
            var $td = $("<td>" + level + "楼</td>");
            $tr.append($td);
            //内容
            $td = $("<td><p>" + cont + "</p></td>");
            $tr.append($td);
            //日期
            var now = new Date();
            var dateStr = now.getFullYear() + "-" + (now.getMonth()+1) + "-" + now.getDate();
            $td = $("<td><span style='color:red'>" + dateStr + "</span></td>");
            $tr.append($td);
        }
    </script>
</head>
<body>
    <div id="list">

    </div>
    <div>
        <textarea id="content"></textarea>
        <input type="button" onclick="doReply()" value="回复"/>
    </div>
</body>
</html>
Code language: HTML, XML (xml)

说明:

  1. 页面加载完成后,$.each遍历JSON数组,动态创建table、tr、td渲染初始评论。
  2. 点击回复按钮执行doReply(),读取textarea内容,动态生成新的评论行追加到表格。
  3. 优化:原代码只获取getDate()(仅日期),改成完整年月日。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注