动态表格 点击单元格查看完整内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分享收藏</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <style>
        .option-btns {
            text-align: center;
        }

        .option-time {
            text-align: center;
        }

        table {
            margin-top: 20px;
            border-collapse: collapse;
            width: 100%; /* 设置表格宽度为100% */
            table-layout: fixed; /* 固定表格布局,有助于控制列宽 */
        }

        td {
            text-align: left; /* 默认左对齐 */
            width: 95%; /* 设置表格宽度为95% */
        }

        td.content {
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
    </style>
    <script>
        $(document).ready(function () {
            // 模拟从后台获取的数据
            var data = [
                {"id": 1,"timerStr":"20240221_211336", "msg": "六王毕,四海一,蜀山兀,阿房出。覆压三百余里,隔离天日。骊山北构而西折,直走咸阳。二川溶溶,流入宫墙。五步一楼,十步一阁。廊腰缦回,檐牙高啄。各抱地势,钩心斗角。盘盘焉,囷囷焉,蜂房水涡,矗不知其几千万落。长桥卧波,未云何龙?复道行空,不霁何虹?高低冥迷,不知西东。歌台暖响,春光融融。舞殿冷袖,风雨凄凄。一日之内,一宫之间,而气候不齐。\n" +
                        "妃嫔媵嫱,王子皇孙,辞楼下殿,辇来于秦,朝歌夜弦,为秦宫人。明星荧荧,开妆镜也。绿云扰扰,梳晓鬟也。渭流涨腻,弃脂水也。烟斜雾横,焚椒兰也。雷霆乍惊,宫车过也。辘辘远听,杳不知其所之也。一肌一容,尽态极妍,缦立远视,而望幸焉。有不见者,三十六年。\n" +
                        "燕赵之收藏,韩魏之经营,齐楚之精英,几世几年,剽掠其人,倚叠如山。一旦不能有,输来其间。鼎铛玉石,金块珠砾,弃掷逦迤,秦人视之,亦不甚惜。\n" +
                        "嗟乎!一人之心,千万人之心也。秦爱纷奢,人亦念其家。奈何取之尽锱铢,用之如泥沙?使负栋之柱,多于南亩之农夫。架梁之椽,多于机上之工女。钉头磷磷,多于在庾之粟粒。瓦缝参差,多于周身之帛缕。直栏横槛,多于九土之城郭。管弦呕哑,多于市人之言语。使天下之人,不敢言而敢怒。独夫之心,日益骄固。戍卒叫,函谷举,楚人一炬,可怜焦土!\n" +
                        "呜呼!灭六国者,六国也,非秦也。族秦者,秦也,非天下也。嗟乎!使六国各爱其人,则足以拒秦。使秦复爱六国之人,则递三世可至万世而为君,谁得而族灭也?秦人不暇自哀,而后人哀之。后人哀之而不鉴之,亦使后人而复哀后人也。 "},
                {"id": 211,"timerStr":"20240221_211326", "msg": "https:www.baidu.comhttps:www.baidu.comhttps:www.baidu.comhttps:www.baidu.comhttps:www.baidu.comhttps:www.baidu.comhttps:www.baidu.comhttps:www.baidu.comwww.baidu.com."},
                {"id": 3,"timerStr":"20240221_211339", "msg": "内fdsgfdg容3"}
            ];

            // 遍历数据,为每个元素创建表格行
            $.each(data, function (index, item) {
                // console.log(JSON.stringify(item)+' '+item.msg+' '+item.id);
                appendRow(item.id, linkify(item.msg),item.timerStr);
            });

            // 新增按钮点击事件
            $('#addBtn').click(function () {
                var newRowId = $('table tbody tr').length + 1; // 简单生成新行的ID
                appendRow(newRowId, '新增内容' + newRowId,'');
            });

            // 动态绑定删除按钮的点击事件
            $('table').on('click', '.delete-btn', function () {
                $(this).closest('tr').remove();
                // 这里可以添加调用后台删除方法的代码
            });

            // 动态绑定复制按钮的点击事件
            $('table').on('click', '.copy', function () {
                var textToCopy = $(this).closest('tr').find('td.content').text(); // 获取这一行类为content的单元格的文本
                copyTextToClipboard(textToCopy); // 调用复制到剪贴板的函数
            });

            // 动态绑定复制按钮的点击事件
            $('table').on('click', '.copyLink', function () {
                <!-- var idValue = $(this).closest('tr').find('.rowId').text(); -->
                var idValue = $(this).closest('tr').find('.copyLink').data('id');
                alert(idValue);
            // <!-- var textToCopy = $(this).closest('tr').find('td.content').text(); // 获取这一行类为content的单元格的文本 -->
            // <!-- var textToCopy = $(this).closest('tr').find('td:first').text(); // 获取这一行第一个单元格的文本 -->
            // <!-- copyTextToClipboard(textToCopy); // 调用复制到剪贴板的函数 -->
            });
            $('table').on('click', 'td.content', function () {
                var $row = $(this).closest('tr');
                if ($row.next().hasClass('full-content')) {
                    $row.next().remove(); // 如果下一行是完整内容行,就移除它
                } else {
                    var fullContent = $(this).text(); // 获取这个单元格的完整内容
                    if (fullContent.length>150) {
                        $row.after('<tr class="full-content"><td colspan="3" style="word-wrap: break-word; padding: 5px">' + fullContent + '</td></tr>'); // 在这一行后面添加一个新行来显示完整的内容
                    }
                }
            });
        });

        // 函数:将文本中的URL转换为可点击的链接
        function linkify(inputText) {
            var replacedText, replacePattern1;

            //URLs starting with http://, https://, or ftp://
            replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
            replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');

            return replacedText;
        }

        // 函数:复制文本到剪贴板
        function copyTextToClipboard(text) {
            var tempTextArea = document.createElement("textarea");
            tempTextArea.style.position = 'fixed';
            tempTextArea.style.opacity = '0';
            tempTextArea.textContent = text;
            document.body.appendChild(tempTextArea);
            tempTextArea.select();
            try {
                document.execCommand('copy');  // 尝试复制文本
            } catch (err) {
                console.error('复制失败', err);
            }
            document.body.removeChild(tempTextArea); // 删除临时文本域
        }

        // 函数:向表格追加一行
        function appendRow(id, msg,timerStr) {
            console.log(msg + ' = ' + id);
            var row = '<tr>' +
                '<td class="option-time">' + (timerStr ? timerStr : '无') + '</td>' +
                '<td class="content">' + (msg ? msg : '无') + '</td>' +
                '<td class="option-btns">' +
                '<button class="copy">copy</button>' +
                '<button class="copyLink" data-id="' + (id ? id : '') + '">copyLink</button>' +
                '<button class="delete-btn">del</button>' +
                '</td>' +
                '</tr>';
            $('table tbody').append(row);
        };
    </script>
</head>
<body>

<button id="addBtn">新增</button>
<table border="1">
    <thead>
    <tr>
        <th style='width: 12%;'>time</th>
        <th style='width: 70%;'>content</th>
        <th style='width: 12%;'>operation</th>
    </tr>
    </thead>
    <tbody>
    <!-- 表格行将通过jQuery动态添加 -->
    </tbody>
</table>

</body>
</html>

另一个

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分享收藏</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <style>
        .option-btns {
            text-align: center;
        }

        .option-time {
            text-align: center;
        }

        table {
            margin-top: 20px;
            border-collapse: collapse;
            width: 100%; /* 设置表格宽度为100% */
            table-layout: fixed; /* 固定表格布局,有助于控制列宽 */
        }

        td {
            text-align: left; /* 默认左对齐 */
            width: 95%; /* 设置表格宽度为95% */
        }

        td.content {
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            cursor: pointer;
        }

        tr.full-content td.content {
            white-space: normal;
            overflow: visible;
            text-overflow: initial;
        }
    </style>
    <script>
        $(document).ready(function () {
            // 模拟从后台获取的数据
            var data = [
                {"id": 1,"timerStr":"20240221_211336", "msg": "六王毕,四海一,蜀山兀,阿房出。覆压三百余里,隔离天日。骊山北构而西折,直走咸阳。二川溶溶,流入宫墙。五步一楼,十步一阁。廊腰缦回,檐牙高啄。各抱地势,钩心斗角。盘盘焉,囷囷焉,蜂房水涡,矗不知其几千万落。长桥卧波,未云何龙?复道行空,不霁何虹?高低冥迷,不知西东。歌台暖响,春光融融。舞殿冷袖,风雨凄凄。一日之内,一宫之间,而气候不齐。
妃嫔媵嫱,王子皇孙,辞楼下殿,辇来于秦,朝歌夜弦,为秦宫人。明星荧荧,开妆镜也。绿云扰扰,梳晓鬟也。渭流涨腻,弃脂水也。烟斜雾横,焚椒兰也。雷霆乍惊,宫车过也。辘辘远听,杳不知其所之也。一肌一容,尽态极妍,缦立远视,而望幸焉。有不见者,三十六年。
燕赵之收藏,韩魏之经营,齐楚之精英,几世几年,剽掠其人,倚叠如山。一旦不能有,输来其间。鼎铛玉石,金块珠砾,弃掷逦迤,秦人视之,亦不甚惜。
嗟乎!一人之心,千万人之心也。秦爱纷奢,人亦念其家。奈何取之尽锱铢,用之如泥沙?使负栋之柱,多于南亩之农夫。架梁之椽,多于机上之工女。钉头磷磷,多于在庾之粟粒。瓦缝参差,多于周身之帛缕。直栏横槛,多于九土之城郭。管弦呕哑,多于市人之言语。使天下之人,不敢言而敢怒。独夫之心,日益骄固。戍卒叫,函谷举,楚人一炬,可怜焦土!
呜呼!灭六国者,六国也,非秦也。族秦者,秦也,非天下也。嗟乎!使六国各爱其人,则足以拒秦。使秦复爱六国之人,则递三世可至万世而为君,谁得而族灭也?秦人不暇自哀,而后人哀之。后人哀之而不鉴之,亦使后人而复哀后人也。 "},
                {"id": 211,"timerStr":"20240221_211326", "msg": "内23容2 https://www.baidu.com/"},
                {"id": 3,"timerStr":"20240221_211339", "msg": "内fdsgfdg容3"}
            ];

            // 遍历数据,为每个元素创建表格行
            $.each(data, function (index, item) {
                // console.log(JSON.stringify(item)+' '+item.msg+' '+item.id);
                appendRow(item.id, linkify(item.msg),item.timerStr);
            });

            // 新增按钮点击事件
            $('#addBtn').click(function () {
                var newRowId = $('table tbody tr').length + 1; // 简单生成新行的ID
                appendRow(newRowId, '新增内容' + newRowId,'');
            });

            // 动态绑定删除按钮的点击事件
            $('table').on('click', '.delete-btn', function () {
                $(this).closest('tr').remove();
                // 这里可以添加调用后台删除方法的代码
            });

            // 动态绑定复制按钮的点击事件
            $('table').on('click', '.copy', function () {
                var textToCopy = $(this).closest('tr').find('td.content').text(); // 获取这一行类为content的单元格的文本
                copyTextToClipboard(textToCopy); // 调用复制到剪贴板的函数
            });

            // 动态绑定复制按钮的点击事件
            $('table').on('click', '.copyLink', function () {
                <!-- var idValue = $(this).closest('tr').find('.rowId').text(); -->
                var idValue = $(this).closest('tr').find('.copyLink').data('id');
                alert(idValue);
            // <!-- var textToCopy = $(this).closest('tr').find('td.content').text(); // 获取这一行类为content的单元格的文本 -->
            // <!-- var textToCopy = $(this).closest('tr').find('td:first').text(); // 获取这一行第一个单元格的文本 -->
            // <!-- copyTextToClipboard(textToCopy); // 调用复制到剪贴板的函数 -->
            });
            // 动态绑定点击事件
            $('table').on('click', 'td.content', function () {
                var $row = $(this).closest('tr');
                var $contentCell = $(this);
                var contentWidth = $contentCell.width();
                var scrollWidth = $contentCell[0].scrollWidth;

                if (scrollWidth > contentWidth) {
                    if ($row.hasClass('full-content')) {
                        $row.removeClass('full-content');
                    } else {
                        $row.addClass('full-content');
                    }
                }
            });
        });

        // 函数:将文本中的URL转换为可点击的链接
        function linkify(inputText) {
            var replacedText, replacePattern1;

            //URLs starting with http://, https://, or ftp://
            replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
            replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');

            return replacedText;
        }

        // 函数:复制文本到剪贴板
        function copyTextToClipboard(text) {
            var tempTextArea = document.createElement("textarea");
            tempTextArea.style.position = 'fixed';
            tempTextArea.style.opacity = '0';
            tempTextArea.textContent = text;
            document.body.appendChild(tempTextArea);
            tempTextArea.select();
            try {
                document.execCommand('copy');  // 尝试复制文本
            } catch (err) {
                console.error('复制失败', err);
            }
            document.body.removeChild(tempTextArea); // 删除临时文本域
        }

        // 函数:向表格追加一行
        function appendRow(id, msg,timerStr) {
            console.log(msg + ' = ' + id);
            var row = '<tr>' +
                '<td class="option-time">' + (timerStr ? timerStr : '无') + '</td>' +
                '<td class="content">' + (msg ? msg : '无') + '</td>' +
                '<td class="option-btns">' +
                '<button class="copy">copy</button>' +
                '<button class="copyLink" data-id="' + (id ? id : '') + '">copyLink</button>' +
                '<button class="delete-btn">del</button>' +
                '</td>' +
                '</tr>';
            $('table tbody').append(row);
        };
    </script>
</head>
<body>

<button id="addBtn">新增</button>
<table border="1">
    <thead>
    <tr>
        <th style='width: 12%;'>time</th>
        <th style='width: 70%;'>content</th>
        <th style='width: 12%;'>operation</th>
    </tr>
    </thead>
    <tbody>
    <!-- 表格行将通过jQuery动态添加 -->
    </tbody>
</table>

</body>
</html>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值