隔行换色总结
第一种思路使用数组将数组的内容渲染到页面上序号也就是将数组的下标输出到第一个td上将数组的内容输出到第二个td上使用拼接字符串具体操作1.HTML 结构搭建​首先让我们来看一下 HTML 代码。我们创建了一个基本的表格结构table标签定义了整个表格cellspacing0属性用于消除表格单元格之间的间距。​thead标签内包含了表格的头部信息这里有一行tr其中三个th标签分别定义了 “序号”“内容”“操作” 三个表头。​tbody标签则是表格主体内容的容器初始时我们预留了它作为动态生成表格行的区域注释掉了一个示例的tr行这行只是为了展示结构实际运行时将由 JavaScript 动态生成。​最后还有一个button按钮其类名为add并绑定了一个点击事件οnclickaddData()用于触发添加数据行的操作。htmltable cellspacing0theadtrth序号/thth内容/thth操作/th/tr/theadtbody!-- trtd1/tdtddata/tdtdbutton classdel删除/button/td/tr --/tbody/tablebutton classadd onclickaddData()添加行/buttonAI写代码htmlcss2.CSS 样式美化​为了让表格看起来更加美观和易于阅读我们添加了一些 CSS 样式。​*选择器用于清除所有元素的默认内外边距确保表格布局的一致性。​table选择器虽然目前只注释掉了设置边框的代码但为后续可能的整体表格样式调整预留了空间。​th选择器为表头单元格设置了内边距和较粗的边框使其更加醒目。​td选择器为普通单元格设置了适当的内边距和较细的边框区分表头与内容单元格的视觉效果。style* {margin: 0;padding: 0;}table {/* border: black 2px solid; */}th {padding: 5px 20px 5px 20px;border: 2px solid black;}td {padding: 5px 20px 5px 20px;border: 1px solid black;}/styleAI写代码cssjs3.JavaScript 功能实现​初始化变量​我们定义了一个数组arr并初始化为[100]这个数组将用于存储表格中的数据。​获取页面中的tbody元素并赋值给变量body后续将通过它来操作表格主体内容。​获取类名为add的按钮元素并赋值给变量add​表格渲染函数apply​apply函数负责将数组中的数据渲染到表格中。它首先初始化一个空字符串str用于存储生成的 HTML 代码片段。​通过for循环遍历数组arr在每次循环中使用模板字符串生成一个tr行的 HTML 代码。这里利用三元运算符${i%2!0?stylebackground-color: aqua;:}根据i的奇偶性为tr行设置不同的背景颜色奇数行背景色为aqua偶数行保持默认。​然后将当前行的序号i 1、数组中的数据arr[i]以及一个带有删除功能的button按钮点击时调用delData(${i})函数分别插入到对应的td元素中。​循环结束后将生成的完整 HTML 字符串str赋值给body.innerHTML从而实现表格的渲染。​添加数据函数addData​addData函数用于实现添加数据行的功能。它首先将变量num的值增加 100这里的num用于生成新的数据值。​然后将新生成的num值通过arr.push(num)方法添加到数组arr中并在控制台打印数组arr方便查看数据更新情况。​最后调用apply函数重新渲染表格使新添加的数据能够及时显示在页面上。​删除数据函数delData​delData函数接收一个参数index该参数表示要删除的数据在数组中的索引。​它通过arr.splice(index, 1)方法从数组arr中移除指定索引位置的数据。​同样调用apply函数重新渲染表格实现删除数据行后页面的实时更新。let arr [100];let body document.getElementsByTagName(tbody)[0];let add document.getElementsByClassName(add)[0];console.log(add);function apply() {let str ;for (i 0; i arr.length; i) {str tr ${i%2!0?stylebackground-color: aqua;:}td${i1}/tdtd${arr[i]}/tdtdbutton classdel onclickdelData(${i})删除/button/td/tr;}body.innerHTML str;}apply();let num 100;// 添加函数function addData() {num 100;console.log(num);arr.push(num);console.log(arr);apply();}// 删除function delData(index){arr.splice(index,1);apply();}AI写代码css以上是第一种思路第二种思路中html和css是一致的所以我们就只讲js中的具体操作。dataNum初始值为 100用于为新添加的行提供数据。// 添加函数function addData() {let tr document.createElement(tr);let tdNum document.createElement(td);let tdData document.createElement(td);let tdDel document.createElement(td);// let num document.createTextNode();let data document.createTextNode(dataNum);let delText document.createTextNode(删除);let del document.createElement(button);del.appendChild(delText);tdDel.appendChild(del);// tdNum.appendChild(num);tdData.appendChild(data);tr.appendChild(tdNum);tr.appendChild(tdData);tr.appendChild(tdDel);console.log(tr);body.appendChild(tr);dataNum 100;rowColor();numOrder();}// 序号函数function numOrder() {let trNum body.children;console.log(trNum);for (i 0; i trNum.length; i) {console.log(i);trNum[i].children[0].innerHTML i1;}rowColor();}// 颜色函数function rowColor() {let trNum body.children;for (i 0; i trNum.length; i) {if (i % 2 ! 0) {console.log(document.getElementsByTagName(tr)[i]);document.getElementsByTagName(tr)[i1].style.backgroundColor red;}else{document.getElementsByTagName(tr)[i1].style.backgroundColor white;}}}// 删除函数body.addEventListener(click, function(e) {console.log(e.target.innerText);if (e.target.innerText 删除) {body.removeChild(e.target.parentElement.parentElement);}rowColor();numOrder();})AI写代码javascript运行添加函数 addData创建一个新的表格行 tr 以及三个单元格 tdNum、tdData 和 tdDel。创建文本节点 data 和 delText分别表示数据和 “删除” 按钮的文本。创建 “删除” 按钮 del并将 delText 添加到按钮中。将 data 添加到 tdData 中将 del 添加到 tdDel 中。将三个单元格添加到 tr 中并将 tr 添加到表体 body 中。dataNum 增加 100以便下次添加行时使用新的数据。调用 rowColor 和 numOrder 函数更新表格的颜色和序号。序号函数 numOrder获取表体中的所有行 trNum。遍历这些行为每行的第一个单元格设置序号序号从 1 开始。调用 rowColor 函数更新表格的颜色。颜色函数 rowColor获取表体中的所有行 trNum。遍历这些行根据行的索引奇偶性设置不同的背景颜色奇数行为红色偶数行为白色。删除函数为表体添加点击事件监听器。当点击的元素文本为 “删除” 时删除对应的行。调用 rowColor 和 numOrder 函数更新表格的颜色和序号。————————————————版权声明本文为CSDN博主「好青崧」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。原文链接https://blog.csdn.net/jht_520/article/details/147074146

相关新闻

技术人如何通过具体创造实现项目后心理修复:以德国自制刺身为例

技术人如何通过具体创造实现项目后心理修复:以德国自制刺身为例

上周五下午,我按下了硕士毕业论文的提交按钮。那一刻,屏幕上的确认弹窗并没有带来想象中的狂喜或彻底放松,反而是一种奇特的平静,混杂着一丝“这就结束了?”的恍惚。紧接着,一个更具体、更迫切的念头冒了出…

2026/8/8 1:23:09 阅读更多 →
终极指南:3步掌握NightX-Client Minecraft修改客户端

终极指南:3步掌握NightX-Client Minecraft修改客户端

终极指南:3步掌握NightX-Client Minecraft修改客户端 【免费下载链接】NightX-Client Minecraft Forge 1.8.9 hacked client, Based on LiquidBounce 项目地址: https://gitcode.com/gh_mirrors/ni/NightX-Client NightX-Client是基于Minecraft Forge 1.8.9开…

2026/8/8 1:23:09 阅读更多 →
终极Mac微信防撤回插件:3分钟安装,永久保留聊天记录

终极Mac微信防撤回插件:3分钟安装,永久保留聊天记录

终极Mac微信防撤回插件:3分钟安装,永久保留聊天记录 【免费下载链接】WeChatIntercept 微信防撤回插件,一键安装,MAC可用,支持最新v4.1.10微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 你…

2026/8/8 1:23:09 阅读更多 →

最新新闻

VC++悬浮窗开发实战:从Win32 API到商业级实现

VC++悬浮窗开发实战:从Win32 API到商业级实现

1. 项目概述:从“悬浮球”到“开发利器”的蜕变 在Windows桌面应用开发领域,悬浮窗(Floating Window)是一个既经典又充满挑战的课题。无论是迅雷的下载悬浮球、360的加速球,还是各类实时监控、快捷操作面板&#xff0c…

2026/8/8 2:14:35 阅读更多 →
基于ITD与互相关的跳频信号降噪算法原理与MATLAB实现

基于ITD与互相关的跳频信号降噪算法原理与MATLAB实现

1. 项目概述:从“听不清”到“听得清”的挑战 在无线通信、雷达探测、声呐定位这些领域,我们经常会遇到一个让人头疼的问题:信号太弱,被淹没在噪声里了。这就好比在一个嘈杂的菜市场里,你想听清远处朋友喊你的声音&…

2026/8/8 2:14:35 阅读更多 →
CTest实战指南:统一管理C++项目测试,提升代码质量与CI效率

CTest实战指南:统一管理C++项目测试,提升代码质量与CI效率

1. 项目概述:为什么我们需要CTest? 在C项目里摸爬滚打十几年,我见过太多因为测试缺失或混乱而导致的“深夜救火”现场。一个功能看似正常,但某次代码合并后,一个不起眼的改动就让整个系统在特定场景下崩溃。问题出在哪…

2026/8/8 2:14:35 阅读更多 →
系统窗与智能家居集成:从原理到落地的超绝落地窗实战指南

系统窗与智能家居集成:从原理到落地的超绝落地窗实战指南

1. 这篇文章真正要解决的问题当你在网上看到“超绝落地窗”的图片,被其通透的视野和现代感所吸引,并萌生“我家也要装一个”的念头时,这篇文章就是为你准备的。它要解决的,远不止是“心动”,而是从心动到行动的鸿沟。很…

2026/8/8 2:14:35 阅读更多 →
Python自动化测试报告输出用例详解:从设计到实战

Python自动化测试报告输出用例详解:从设计到实战

1. 项目概述:为什么我们需要“自动化报告的输出用例”? 在软件开发和测试领域,尤其是涉及持续集成和频繁回归的场景,生成一份清晰、准确、美观的测试报告,其重要性不亚于测试用例本身。想象一下,你花了三天…

2026/8/8 2:14:35 阅读更多 →
高端腕表复刻V2版深度解析:圈口电镀与丹东3235机芯升级

高端腕表复刻V2版深度解析:圈口电镀与丹东3235机芯升级

1. 先搞清楚“科普VS日志”到底在说什么看到“科普VS日志36MM‘最新v2版本’”这个标题,很多人的第一反应可能是懵的。这不像一个标准的软件项目或技术工具。实际上,这个标题指向的是一个非常具体的领域——高端腕表复刻或同款产品的迭代更新。这里的“日…

2026/8/8 2:13:35 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →