使用JavaScript和jQuery动态生成带随机背景色的表格并限制创建次数

使用JavaScript和jQuery动态生成带随机背景色的表格并限制创建次数

在现代web开发中,动态生成和管理页面元素是常见的需求。例如,根据用户操作添加、修改或删除dom元素。本教程将深入探讨如何利用javascriptjquery库,实现一个功能强大的动态表格生成器,该生成器不仅能响应用户点击创建新表格,还能为每个表格赋予独特的随机背景色,并严格控制可创建的表格总数。

1. 核心概念与技术

在开始实现之前,我们首先了解涉及到的核心概念和技术:

DOM操作 (Document Object Model): 允许JavaScript与HTML文档进行交互。我们将使用它来创建、插入和修改HTML元素。jQuery库: 一个快速、小型且功能丰富的JavaScript库,极大地简化了HTML文档遍历、事件处理、动画和Ajax交互。事件处理: 监听并响应用户在网页上的操作,例如按钮点击。状态管理: 在客户端维护应用程序的状态,例如已创建表格的数量。动态样式: 在运行时生成并应用CSS样式,例如随机背景颜色。

2. 需求分析与解决方案设计

根据原始问题,我们需要实现以下功能:

动态生成表格: 当用户点击特定按钮时,向页面中添加一个新的表格结构。随机背景色: 每个新生成的表格都应该拥有一个与之前不同的随机背景颜色。限制创建次数: 设定一个最大值,当创建的表格数量达到此限制时,停止继续生成表格并给出提示。

针对这些需求,我们的解决方案设计如下:

计数器变量: 引入一个JavaScript变量来追踪已创建表格的数量。随机颜色生成函数: 编写一个JavaScript函数,用于生成有效的CSS颜色值(例如,十六进制颜色码)。修改点击事件处理器: 在按钮的点击事件中,首先检查计数器是否达到上限。如果未达到,则生成随机颜色,将其应用到新表格的HTML结构中,然后将表格添加到DOM,并递增计数器。

3. 实现步骤与代码示例

我们将基于原始代码进行修改和优化。假设页面中存在一个ID为 formButton 的按钮用于触发表格生成,以及一个ID为 dynamic-forms 的容器用于存放动态生成的表格。

立即学习“Java免费学习笔记(深入)”;

3.1 引入计数器和随机颜色函数

首先,在您的 标签内部,定义一个全局计数器变量和一个用于生成随机十六进制颜色的函数。

    // ... 现有代码 ...    let tableClickCount = 0; // 初始化表格创建计数器    const MAX_TABLES = 4;    // 定义最大允许创建的表格数量    /**     * 生成一个随机的十六进制颜色代码。     * @returns {string} 例如:#RRGGBB     */    function getRandomHexColor() {        const letters = '0123456789ABCDEF';        let color = '#';        for (let i = 0; i < 6; i++) {            color += letters[Math.floor(Math.random() * 16)];        }        return color;    }    // ... 现有代码 ...

3.2 修改按钮点击事件处理器

接下来,修改 $(“#formButton”).click() 事件处理器。在该处理器内部,我们将加入逻辑来检查表格数量限制,生成随机颜色,并将其应用到新表格的样式中。

    // ... (getRandomHexColor 和 tableClickCount, MAX_TABLES 的定义) ...    $(document).ready(function () {        $("#formButton").click(function () {            // 1. 检查是否达到表格数量上限            if (tableClickCount >= MAX_TABLES) {                alert(`已达到最大表格数量限制 (${MAX_TABLES}个)。`);                return; // 阻止继续执行,不再生成表格            }            // 确保动态表单容器可见            document.getElementById("dynamic-forms").style.display = "block";            // 2. 生成一个随机颜色            const randomColor = getRandomHexColor();            // 3. 构建包含随机背景色的表格HTML字符串            // 注意:为了避免ID重复,我们将form的ID动态化            $("#dynamic-forms").append(                `                                                        
Location P1
P2 P3
Sometime Full day
` ); $("#pan").val(""); // 清空输入框 tableClickCount++; // 4. 递增计数器 }); }); // 原始的删除表格事件绑定,可以修改为使用类选择器,因为ID "tbl1" 可能会重复 $(document).on("click",".remove-table-btn",function (click) { click.preventDefault(); $(this).closest('form').remove(); // 移除最近的form父元素 // 考虑是否需要递减 tableClickCount,这取决于您的业务逻辑 // 如果删除后允许重新创建,则需要 tableClickCount--; // 如果删除只是隐藏,不影响创建上限,则不需要。 }); // ... (其他现有代码,如 yesnoCheck 和 copyForms) ...

代码说明:

tableClickCount 和 MAX_TABLES: tableClickCount 用于记录当前已创建的表格数量,MAX_TABLES 定义了允许创建的最大数量。getRandomHexColor(): 此函数通过随机生成6位十六进制字符来构建一个颜色代码,例如 #A3F2C1。数量限制检查: 在 formButton 的点击事件处理函数开始时,我们添加了一个 if (tableClickCount >= MAX_TABLES) 检查。如果已达到上限,则弹出一个警告框并使用 return; 退出函数,阻止表格的进一步生成。应用随机颜色: 在构建表格的HTML字符串时,我们将 randomColor 变量嵌入到 标签的 style 属性中:style=”background-color: ${randomColor};”。递增计数器: 每成功生成一个表格后,tableClickCount 会递增 1。ID唯一性: 原始代码中 id=”form1″ 和 id=”tbl1″ 可能会导致多个元素拥有相同的ID,这违反了HTML规范。在修改后的代码中,我们将 form 的ID更改为 dynamicForm-${tableClickCount + 1} 以确保唯一性。同时,删除按钮的ID tbl1 也被替换为类 remove-table-btn,以便更好地处理多个删除按钮。删除事件优化: 原始的 $(document).on(“click”,”#tbl1″,function (click)) 被修改为 $(document).on(“click”,”.remove-table-btn”,function (click)),使用类选择器来绑定事件,并通过 $(this).closest(‘form’).remove(); 更准确地移除整个表单容器。

4. 完整HTML结构示例

为了使上述JavaScript代码能够正常工作,确保您的HTML结构包含相应的元素,例如下拉菜单、输入框、按钮和动态容器。

        动态表格生成与样式定制                body {            font-family: Arial, sans-serif;            background-color: #0979ad;            color: #fff;        }        center {            margin-top: 20px;        }        table {            border-collapse: collapse;            width: 80%;            margin: 0 auto;            background-color: #225670ad; /* 默认表格颜色 */            border-radius: 8px;            overflow: hidden;        }        td {            padding: 10px;            border: 1px solid #3c6e8e;        }        input[type="text"] {            padding: 8px;            border: 1px solid #ccc;            border-radius: 4px;            width: 150px;        }        button {            padding: 8px 15px;            background-color: #4CAF50;            color: white;            border: none;            border-radius: 4px;            cursor: pointer;            font-size: 16px;        }        button:hover {            opacity: 0.9;        }        .remove-table-btn {            background-color: #f44336;        }        select {            padding: 8px;            border-radius: 4px;        }        #dynamic-forms form {            border: 1px solid #3c6e8e;            padding: 15px;            border-radius: 8px;            background-color: rgba(0,0,0,0.1); /* 略微透明背景 */        }        

__Select__ Single Multiple


Location P1
P2 P3
Sometime Full day





// yesnoCheck 函数保持不变 function yesnoCheck(that) { if (that.value == "single") { document.getElementById("first").style.display = "block"; $("#dynamic-forms").empty(); document.getElementById("dynamic-forms").style.display = "none"; document.getElementById("t1").value = ""; document.getElementById("t2").value = ""; document.getElementById("t3").value = ""; document.getElementById("t4").value = ""; document.getElementById("t5").value = ""; document.getElementById("t6").value = ""; document.getElementById("formButton").value = ""; tableClickCount = 0; // 重置计数器当切换到single模式时 } else { document.getElementById("first").style.display = "none"; } if (that.value == "multiple") { document.getElementById("second").style.display = "block"; } else { document.getElementById("second").style.display = "none"; } } // 随机颜色生成函数和计数器定义 let tableClickCount = 0; const MAX_TABLES = 4; function getRandomHexColor() { const letters = '0123456789ABCDEF'; let color = '#'; for (let i = 0; i < 6; i++) { color += letters[Math.floor(Math.random() * 16)]; } return color; } // 删除表格事件绑定 (使用类选择器) $(document).on("click",".remove-table-btn",function (click) { click.preventDefault(); $(this).closest('form').remove(); tableClickCount--; // 删除表格时递减计数器,允许重新创建 if (tableClickCount = MAX_TABLES) { alert(`已达到最大表格数量限制 (${MAX_TABLES}个)。`); return; } document.getElementById("dynamic-forms").style.display = "block"; const randomColor = getRandomHexColor(); $("#dynamic-forms").append( `

以上就是使用JavaScript和jQuery动态生成带随机背景色的表格并限制创建次数的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1594185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何实现点击区域外部关闭弹出框的教程
上一篇 2025年12月23日 09:14:19
html如何封装组件_HTML组件化开发(自定义标签/复用)方法
下一篇 2025年12月23日 09:14:30

相关推荐

  • 文本超出两行如何自动展开并显示下箭头?

    实现文本超出两行自动展开并显示下箭头的方案: 本文提供一种方法,让文本超出两行时自动展开并显示下箭头图标,点击箭头可收起或展开文本。 步骤一:CSS样式控制文本显示行数及溢出 首先,使用CSS控制文本显示行数,并设置溢出文本隐藏。 关键在于-webkit-line-clamp属性,以及overflo…

    2026年9月6日
    000
  • 方正证券APP怎么开启指纹登录_方正证券APP指纹登录设置方法

    方正证券“小方”APP支持指纹登录,需确保手机已录入指纹并开启权限,同时更新APP至最新版本;2. 登录后进入【我的】-【安全中心】-【指纹登录】,按提示验证密码即可开通;3. 若无法找到选项,可尝试重启或重装APP,或联系客服解决。 方正证券的“小方”APP支持指纹登录功能,能方便快捷地进入账户。…

    2026年9月6日
    100
  • VSCode怎么建立JSP文件_VSCode创建和编辑JSP页面文件教程

    答案:在VSCode中创建和编辑JSP文件需安装Java Extension Pack和XML Language Support扩展,配置Java SDK及Maven/Gradle项目,添加servlet-api和jsp-api依赖,创建JSP文件后通过外部Tomcat等服务器部署,并可借助Tomc…

    2026年9月6日
    200
  • 微博的“围观”功能怎么用_微博围观功能使用方法

    1、点击“围观”按钮可解锁隐藏内容;2、完成点赞、关注等任务后再次点击“围观”获取完整信息;3、检查账号登录状态与权限,确保功能正常使用。 如果您在浏览微博时发现某些用户的内容被部分隐藏,需要特定操作才能查看完整信息,这可能是触发了平台的互动机制。以下是解锁此类内容的几种方式: 本文运行环境:小米1…

    2026年9月6日
    000
  • CPU单核和多核有什么区别 cpu单核和多核的区别介绍

    CPU单核和多核有什么区别 cpu单核和多核的区别介绍CPU单核和多核有什么区别 cpu单核和多核的区别介绍CPU单核和多核有什么区别 cpu单核和多核的区别介绍CPU单核和多核有什么区别 cpu单核和多核的区别介绍

    在选择cpu时,单核性能和多核性能是两个关键的参考指标。无论是游戏玩家、日常办公用户、设计师,还是从事服务器运维的专业人员,了解单核与多核之间的差异,有助于更精准地挑选适合自身需求的处理器。接下来,我们就来详细解析这两者之间的区别。 一、单核与多核的基本概念 1、单核性能:主频越高,响应越快 单核C…

    2026年9月6日 用户投稿
    000
  • 番茄小说翻页模式怎么切换_番茄小说翻页模式切换方法

    1、可在阅读界面点击屏幕中央调出菜单,进入设置更改翻页模式;2、书籍详情页首次阅读时可预设翻页效果;3、通过个人中心的阅读设置可修改默认翻页模式为仿真、滑动等,全局生效。 如果您在阅读小说时觉得当前的翻页方式不够顺手,可以通过设置调整番茄小说的翻页模式以获得更舒适的阅读体验。以下是切换翻页模式的具体…

    2026年9月6日
    000
  • 小可搜搜App如何搜索本地文件 小可搜搜App的手机存储检索功能

    小可搜搜App支持通过文件标题、内容及类型筛选快速查找本地文件。首先开启存储权限并进入文件搜索模块,输入文件名关键词可检索匹配结果;开启内容搜索后能查找包含特定文字的文档,支持PDF、Word等格式;搜索后还可按图片、视频、文档等类型筛选结果,提升定位效率。 如果您在手机上使用小可搜搜App,希望快…

    2026年9月6日
    000
  • Steam 5月份硬件软件调查结果:RTX 3060占比最高

    Steam 5月份硬件软件调查结果:RTX 3060占比最高Steam 5月份硬件软件调查结果:RTX 3060占比最高Steam 5月份硬件软件调查结果:RTX 3060占比最高Steam 5月份硬件软件调查结果:RTX 3060占比最高

    2025 年 5 月份 Steam 硬件与软件调查报告的结果现已公布,该项调查统计了全球 Steam 用户最常用的显卡、处理器以及操作系统等数据,其中在显卡榜单里,NVIDIA GeForce RTX 3060 占比率为 4.73%,排行第一。 移动版RTX 4060(4.65%)、桌面版RTX 4…

    2026年9月6日 用户投稿
    200
  • win10电脑开机黑屏有鼠标怎么办

    win10电脑开机黑屏有鼠标怎么办win10电脑开机黑屏有鼠标怎么办win10电脑开机黑屏有鼠标怎么办win10电脑开机黑屏有鼠标怎么办

    有小伙伴说自己的win10电脑开机黑屏有鼠标怎么办?一般出现电脑开机后显示器黑屏只有鼠标很有可能是资源管理器的问题,下面小编就教下大家win10电脑开机黑屏有鼠标的解决方法。 1、按下Ctrl+Alt+Del组合键,打开任务管理器,单击左上角的文件,选择运行新任务,弹出窗口中,输入explorer.…

    2026年9月6日 用户投稿
    100
  • Word文档文档翻译怎么做_Word文档文档翻译如何做详细方法

    使用Word内置翻译功能可快速翻译并保持格式,适合中英文互译;2. 导出文档为.docx或.txt后借助DeepL、Google翻译等工具可提升翻译质量,但需注意隐私与文件大小限制;3. 安装WPS、Trados等第三方工具或插件支持专业翻译、术语库和OCR识别,适合大型或企业级项目;4. 根据文档…

    2026年9月6日
    000
  • 智能外呼系统怎么搭建_TwilioAI外呼机器人配置指南

    答案是利用Twilio搭建智能外呼系统需注册账号获取API密钥、购买电话号码、配置Twilio函数与TwiML应用、编写外呼逻辑并可集成AI能力,最后测试优化及持续监控。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 智能外呼系统搭建的核心…

    2026年9月6日
    100
  • 使用Holer服务端软件搭建属于自己的内网穿透

    使用Holer服务端软件搭建属于自己的内网穿透使用Holer服务端软件搭建属于自己的内网穿透使用Holer服务端软件搭建属于自己的内网穿透使用Holer服务端软件搭建属于自己的内网穿透

    用户可以下载 holer-server.zip 来搭建自己的holer服务端。 搭建Holer服务端的准备工作 (1) 准备一台运行Linux或Windows系统的主机; (2) 安装Java 1.8或更高版本,并通过运行命令 java -version 确认Java是否可用; (3) 安装并启动N…

    2026年9月6日 用户投稿
    200
  • vscode jshint 插件安装报错

    在安装vscode的jshint插件时,如果遇到右下角提示报错信息如下: Failed to load jshint library.Please install jshint in your workspace folder using’npm install jshint&#8217…

    2026年9月6日
    100
  • 白酒视频号如何认证商家?认证费用是多少?

    在白酒行业,通过视频号完成商家认证是增强品牌公信力、打通正规线上销售渠道的重要环节。该过程需提交相关资质文件,并支付一定费用。成功认证后,可享受更多平台权益,推动线上营销与销售增长。 一、白酒类视频号商家如何完成认证? 由于白酒属于特殊监管类商品,其视频号小店的入驻认证流程较一般商品更为严格,需提供…

    2026年9月6日
    100
  • 海易办如何查询从业资格证

    可通过“海易办”平台查询海南从业资格证:1. 下载“海易办”App,注册登录后搜索“证书信息查询”,选择“人社服务”进入并选“从业资格证”查看电子版;2. 微信小程序搜索“海易办”,授权登录后在“人社服务”中查询;3. 支付宝小程序同理,搜索“海易办”并授权后查找相关服务完成查询。 如果您在海南或需…

    2026年9月6日
    100
  • 介绍基于Java和MySQL的图书管理系统

    介绍基于Java和MySQL的图书管理系统介绍基于Java和MySQL的图书管理系统介绍基于Java和MySQL的图书管理系统介绍基于Java和MySQL的图书管理系统

    免费学习推荐:mysql视频教程 Java图书管理系统 项目需求 随着计算机的普及和应用水平的提高,经过考察比较,决定利用自己的Java知识开发小型的图书管理系统,方便图书的管理。 图书管理系统是典型的信息管理系统。本次作业利用JAVA开发工具Eclipse和MySQL数据库来开发这个图书管理系统。…

    2026年9月6日 用户投稿
    200
  • CVE-2019-0841 DACL权限覆盖本地提权漏洞攻击分析

    CVE-2019-0841 DACL权限覆盖本地提权漏洞攻击分析CVE-2019-0841 DACL权限覆盖本地提权漏洞攻击分析CVE-2019-0841 DACL权限覆盖本地提权漏洞攻击分析CVE-2019-0841 DACL权限覆盖本地提权漏洞攻击分析

    0x00 前言 近期,国外研究员Nabeel Ahmed泄露了CVE-2019-0841漏洞的细节,该漏洞一旦被成功利用,低权限用户便可获得目标文件的“完全控制”权限。红队人员通过结合dll劫持等攻击技术,可以实现提升权限至NT Authority/SYSTEM并进行后门攻击。微软认为,该漏洞是由W…

    2026年9月6日 用户投稿
    100
  • 百度地图怎么查找公共厕所_百度地图公共厕所查询方式

    1、打开百度地图,点击【发现周边】选择【厕所】可快速定位附近公厕;2、搜索目标地点后点击【周边】→【厕所】,可提前了解特定区域厕所分布;3、直接在搜索栏输入“公厕”,地图将显示当前位置附近的厕所标记,点击即可查看地址、距离及实景照片,并通过【到这去】导航前往。 如果您在外出时需要寻找最近的公共厕所,…

    2026年9月6日
    200
  • 如何高效设计和编辑包含复杂嵌套结构的表单?

    巧妙应对复杂表单的嵌套结构 设计和编辑包含数组、嵌套对象及可转换元素的复杂表单,其树状结构往往带来不小的挑战。本文将探讨如何有效解决这一难题。 挑战剖析 假设表单包含: 线数组:包含可互相转换的简单线和标记线对象。标记线对象:包含一个简单标记对象的数组,且这些对象可以进一步嵌套。表单根据所选树节点动…

    2026年9月6日
    000
  • VSCode怎么设置注释头_VSCode自定义文件头注释与代码模板教程

    答案:通过VSCode内置用户代码片段和扩展实现自定义注释头与代码模板,提升开发效率、规范代码并支持自动更新。首先使用内置Snippets功能创建语言专属或全局代码片段,通过JSON定义前缀、内容及变量如$TM_FULLNAME和$CURRENT_YEAR等,实现快速插入文件头;其次,为实现新建文件…

    2026年9月6日
    200

发表回复

登录后才能评论
关注微信