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

news2025/1/10 20:26:00

<!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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1461268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java零基础 - 逻辑运算符

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

[word] word带圈数字20以上 #笔记#笔记

word带圈数字20以上 办公中有时候需要用到带圈数字&#xff0c;超过20的数字就不能直接编辑了&#xff0c;那么20以上带圈数字要怎么输入呢&#xff1f;其实通过小技巧就能完成的&#xff0c;接下来就给大家介绍下呢&#xff0c;一起看看吧&#xff01; 20以上带圈数字输入技巧…

LaunchPad 市场的复苏,Penpad 成新兴生力军

以 Fair Launch 为主要启动方式的铭文市场的爆发&#xff0c;推动了 LaunchPad 市场的复苏&#xff0c;绝多数所铭文项目都能通过 Fairr Launch 的方式筹集资金实现启动&#xff0c;该赛道的爆发不仅推动了数百亿美元的热钱开始在链上不断涌动&#xff0c;同时也进一步形成了新…

String为什么是不可变的?

一、String字符串类型的数据结构 首先&#xff0c;String类是由 final 关键字修饰&#xff0c;这说明String 不可被继承。其次&#xff0c;由源代码可以看出String的成员字段value是一个char[ ]数组&#xff0c;在后面所有的String方法里都不提供修改Array数组的方法&#xff0…

torch.manual_seed(233333)

torch.manual_seed&#xff08;233333&#xff09; 介绍报错信息解决问题总结 介绍 这是在使用GPT-SoVITS时运行缺失pytorch导致报的错 报错信息 Traceback (most recent call last): File “D:\vits\GPT-SoVITS-beta\GPT-SoVITS-beta0217\webui.py”, line 10, in torch.m…

文件上传漏洞--Upload-labs--Pass17--条件竞争

一、条件竞争原理&#xff08;结合代码审计&#xff09; 1、首先进行代码审计&#xff0c;查看源代码。 我们可知&#xff0c;将文件上传至服务器后&#xff0c;不会被立即删除&#xff0c;而是做短暂的停留&#xff0c;中间会有一小部分时间差&#xff0c;这部分时间差是代码…

STM32使用软件SPI协议操作TFT18彩屏

时间记录&#xff1a;2024/2/20 一、SPI协议介绍 &#xff08;1&#xff09;SPI设备通过4根线进行通信&#xff0c;CS片选线&#xff0c;选择从设备&#xff0c;SCK时钟线&#xff0c;由主设备产生时钟&#xff0c;主机MOSI线连从机MISO线&#xff0c;由主机向从机发送信息&am…

HighTec编译器系列之01新建工程

HighTec编译器系列之01新建工程 继上篇《Hightec编译器系列之白嫖就是爽》小T告诉大家如何白嫖HighTec编译器长达一年之久之后&#xff0c;今天小T告诉大家如何进行HighTec编译器IDE的基础操作-即新建HighTec工程。 以下是本期内容的行文大纲&#xff1a; S1&#xff1a;创建…

Cesium for Unreal 从源码编译到应用——插件编译

一、安装环境 Unreal Engine 5.3 CMake 3.17.5 Microsoft Visual Studio 2019 二、源码准备 下载cesium-unreal-samples工程。 git clone https://github.com/CesiumGS/cesium-unreal-samples.git 然后在工程目录创建Plugins文件夹&#xff0c;并下载cesium-unreal工程。 …

java常用应用程序编程接口(API)——Objects类和包装类

前言&#xff1a; Object类和Objects类是完全不同的两个类&#xff0c;之前有说过Object类&#xff0c;这次说一下Objects类。打好基础&#xff0c;daydayup! Object类可以看这篇&#xff1a;java常用应用程序编程接口&#xff08;API&#xff09;——Object类概述及常用方法 O…

IIC通信驱动硬件编程 (1)

1、IIC协议基础 I2C( IIC )属于两线式串行总线&#xff0c;由飞利浦公司开发用于微控制器(MCU)和外围设备(从设备)进行通信的一种总线&#xff0c;属于一主多从即一个主设备(Master)&#xff0c;多个从设备(Slave))的总线结构&#xff0c;总线上的每个设备都有一个特定的设备地…

MR(混合现实)系统的开发流程

MR&#xff08;混合现实&#xff09;系统是一种将虚拟信息与真实世界环境相结合的技术&#xff0c;通过头戴式显示器、智能手机等设备将虚拟对象叠加在用户的真实感知中。它可以让用户与虚拟对象进行互动&#xff0c;并在真实环境中观察虚拟对象的行为。MR&#xff08;混合现实…

this的指向问题总结

this一般会出现在函数里面&#xff0c;但是一般情况下只有在函数被调用执行时&#xff0c;才能确定this指向哪个对象。一般情况下this是指调用函数的对象。 1.在全局作用域下或者普通函数中this的指向一般都是window对象 window.fn&#xff08;&#xff09;&#xff0c;普通函…

​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】

欢迎来CILMY23的博客喔&#xff0c;本期系列为​【C语言】长篇详解&#xff0c;字符系列篇3-----strstr&#xff0c;strtok&#xff0c;strerror字符串函数的使用【图文详解​】&#xff0c;图文讲解各种字符串函数&#xff0c;带大家更深刻理解C语言中各种字符串函数的应用&am…

35年的卓越成就:威步在网络安全和软件授权领域持续领先

1989-2023&#xff1a;威步成立35年里程碑。这35年中&#xff0c;公司始终致力于业务连续性、技术进步和团队凝聚力。 ​全球信任与在地优势&#xff1a;威步凭借其全球渠道合作伙伴网络&#xff0c;确保国际客户像信赖本地优质企业一样信赖他们。 传统与创新&#xff1a;威步…

Solidworks:焊件(型材)结构构件设计

焊件&#xff08;型材&#xff09;结构构件设计是Solidworks的一大特色。使用这一功能&#xff0c;能够体会到这款软件的架构设计在逐步递进增加软件功能方面做出的特别努力。 设计一个三角形框架 正面&#xff1a; 换个角度观察&#xff1a; 再来一个练习&#xff0c;包含…

顺序表详解(SeqList)

本文使用C语言进行顺序表的代码实现。 博主将使用代码和相关知识相结合的方式进行讲解&#xff0c;简单易懂&#xff0c;懵懂的大学生一听就会~ 顺序表是一种线性表的存储结构&#xff0c;它将数据元素存储在一段连续的存储空间中&#xff0c;每个元素占据一个存储单元&#x…

Spring Security 认证授权安全框架

Spring Security概述 1.什么是Spring Security? Spring Security是一个Java框架&#xff0c;用于保护应用程序的安全性。它提供了一套全面的安全解决方案&#xff0c;包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念&#xff0c;可以轻松地集成到任…

白盒测试接口测试自动化测试

一、白盒测试&#xff1a;一种测试策略&#xff0c;允许我们检查程序的内部结构&#xff0c;对程序的逻辑结构进行检查&#xff0c;从中获取测试数据。白盒测试的对象基本是源程序&#xff0c;所以它又称为结构测试或逻辑驱动测试&#xff0c;白盒测试方法一般分为静态测试和动…

Cesium 问题:加载 gltf 格式的模型之后太小,如何让相机视角拉近

文章目录 问题分析问题 刚加载的模型太小,如何拉近视角放大 分析 在这里有两种方式进行拉近视角, 一种是点击复位进行视角拉近一种是刚加载就直接拉近视角// 模型三加载 this.damModel = new Cesium.Entity({name: "gltf模型",position:</