
本教程详细介绍了如何使用javascript和jquery动态生成html表格,并为每个新生成的表格应用随机背景色。此外,我们还将实现一个机制,限制用户可以追加表格的次数,以防止页面内容无限增长。通过具体的代码示例,您将学会如何控制ui元素的动态创建和样式设置。
在现代Web开发中,动态地添加、移除和修改页面元素是常见的需求。本教程将指导您如何利用JavaScript和jQuery实现一个功能,即在用户点击按钮时,动态地追加一个带有随机背景色的表格,并设定一个追加次数的上限。
我们将解决以下三个主要问题:
我们需要一个按钮来触发表格的追加操作,以及一个容器来存放这些动态生成的表格。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>动态表格生成</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 50px;
}
#second {
margin-bottom: 20px;
}
#dynamic-forms form {
margin-bottom: 15px;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
position: relative;
}
#dynamic-forms table {
width: 100%;
border-collapse: collapse;
margin-top: 10px;
}
#dynamic-forms td {
padding: 8px;
border: 1px solid #ddd;
}
#dynamic-forms input[type="text"] {
margin-left: 10px;
padding: 5px;
border: 1px solid #ccc;
border-radius: 3px;
}
#tbl1 {
float: right;
margin-right: 10px;
background-color: #f44336;
color: white;
border: none;
padding: 5px 10px;
border-radius: 3px;
cursor: pointer;
}
#tbl1:hover {
background-color: #d32f2f;
}
#formButton {
background-color: #4CAF50;
color: white;
border: none;
padding: 8px 15px;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
}
#formButton:hover {
background-color: #45a049;
}
</style>
</head>
<body>
<div id="second">
<label>Location</label>
<input type="text" id="pan" name="pan">
<button type="button" id="formButton">+</button>
</div>
<div id="dynamic-forms">
<!-- 动态生成的表格将显示在这里 -->
</div>
<script>
// JavaScript/jQuery 代码将放在这里
</script>
</body>
</html>在上述HTML中:
立即学习“Java免费学习笔记(深入)”;
我们将使用jQuery来简化DOM操作。
为了限制表格的追加次数,我们需要一个计数器来跟踪当前已追加的表格数量。
let tableCount = 0; // 初始化表格计数器 const MAX_TABLES = 3; // 设置最大追加表格数量
创建一个辅助函数来生成随机的RGB颜色字符串。
function getRandomColor() {
const r = Math.floor(Math.random() * 256); // 0-255
const g = Math.floor(Math.random() * 256); // 0-255
const b = Math.floor(Math.random() * 256); // 0-255
return `rgb(${r}, ${g}, ${b})`;
}现在,我们将修改#formButton的点击事件处理逻辑,集成计数器和随机颜色功能。
$(document).ready(function () {
// 监听 #formButton 的点击事件
$("#formButton").click(function () {
// 1. 检查是否达到最大表格数量
if (tableCount >= MAX_TABLES) {
alert(`已达到最大表格数量 (${MAX_TABLES}),无法继续追加。`);
return; // 阻止继续执行
}
// 2. 生成随机背景色
const randomBgColor = getRandomColor();
// 3. 构建表格HTML字符串
// 注意:这里使用了模板字符串,并动态插入了背景色和输入框的值
const newTableHtml = `
<form id="form${tableCount + 1}" style="margin-bottom:10px;margin-top:10px">
<button style="float:right; margin-right:10px;" type="button" class="remove-table-btn" value="clear">-</button>
<table style="background-color: ${randomBgColor};">
<tr>
<td>Location
<input type="text" value="${$("#pan").val()}">
</td>
<td>P1
<input type="text">
</td>
</tr>
<tr>
<td>P2
<input type="text">
</td>
<td>P3
<input type="text">
</td>
</tr>
<tr>
<td>Sometime
<input type="text">
</td>
<td>Full day
<input type="text">
</td>
</tr>
</table>
</form>
`;
// 4. 将新表格追加到容器中
$("#dynamic-forms").append(newTableHtml);
// 5. 更新计数器
tableCount++;
// 6. 清空Location输入框的值 (可选)
$("#pan").val("");
});
// 监听动态生成的移除按钮的点击事件
// 使用事件委托,因为按钮是动态添加的
$(document).on("click", ".remove-table-btn", function (event) {
event.preventDefault(); // 阻止默认行为
$(this).closest("form").remove(); // 移除最近的父级 <form> 元素
tableCount--; // 移除表格后,计数器减一
});
});代码解析:
将上述HTML结构、CSS样式和JavaScript代码整合后,您将得到一个功能完整的页面。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>动态表格生成与颜色控制</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 50px;
}
#second {
margin-bottom: 20px;
}
#dynamic-forms form {
margin-bottom: 15px;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
position: relative;
}
#dynamic-forms table {
width: 100%;
border-collapse: collapse;
margin-top: 10px;
}
#dynamic-forms td {
padding: 8px;
border: 1px solid #ddd;
}
#dynamic-forms input[type="text"] {
margin-left: 10px;
padding: 5px;
border: 1px solid #ccc;
border-radius: 3px;
}
.remove-table-btn { /* 统一移除按钮的样式 */
float: right;
margin-right: 10px;
background-color: #f44336;
color: white;
border: none;
padding: 5px 10px;
border-radius: 3px;
cursor: pointer;
}
.remove-table-btn:hover {
background-color: #d32f2f;
}
#formButton {
background-color: #4CAF50;
color: white;
border: none;
padding: 8px 15px;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
}
#formButton:hover {
background-color: #45a049;
}
</style>
</head>
<body>
<div id="second">
<label>Location</label>
<input type="text" id="pan" name="pan">
<button type="button" id="formButton">+</button>
</div>
<div id="dynamic-forms">
<!-- 动态生成的表格将显示在这里 -->
</div>
<script>
let tableCount = 0; // 初始化表格计数器
const MAX_TABLES = 3; // 设置最大追加表格数量
// 生成随机RGB颜色字符串的辅助函数
function getRandomColor() {
const r = Math.floor(Math.random() * 256);
const g = Math.floor(Math.random() * 256);
const b = Math.floor(Math.random() * 256);
return `rgb(${r}, ${g}, ${b})`;
}
$(document).ready(function () {
// 监听 #formButton 的点击事件
$("#formButton").click(function () {
// 1. 检查是否达到最大表格数量
if (tableCount >= MAX_TABLES) {
alert(`已达到最大表格数量 (${MAX_TABLES}),无法继续追加。`);
return; // 阻止继续执行
}
// 2. 生成随机背景色
const randomBgColor = getRandomColor();
// 3. 构建表格HTML字符串
const newTableHtml = `
<form id="form${tableCount + 1}" style="margin-bottom:10px;margin-top:10px">
<button type="button" class="remove-table-btn" value="clear">-</button>
<table style="background-color: ${randomBgColor};">
<tr>
<td>Location
<input type="text" value="${$("#pan").val()}">
</td>
<td>P1
<input type="text">
</td>
</tr>
<tr>
<td>P2
<input type="text">
</td>
<td>P3
<input type="text">
</td>
</tr>
<tr>
<td>Sometime
<input type="text">
</td>
<td>Full day
<input type="text">
</td>
</tr>
</table>
</form>
`;
// 4. 将新表格追加到容器中
$("#dynamic-forms").append(newTableHtml);
// 5. 更新计数器
tableCount++;
// 6. 清空Location输入框的值 (可选)
$("#pan").val("");
});
// 监听动态生成的移除按钮的点击事件
// 使用事件委托,因为按钮是动态添加的
$(document).on("click", ".remove-table-btn", function (event) {
event.preventDefault(); // 阻止默认行为
$(this).closest("form").remove(); // 移除最近的父级 <form> 元素
tableCount--; // 移除表格后,计数器减一
});
});
</script>
</body>
</html>通过本教程,您学会了如何利用JavaScript和jQuery实现以下功能:
这些技术是构建交互式和动态Web界面的基础,掌握它们将大大提升您的前端开发能力。
以上就是动态生成带随机背景色的表格并限制追加次数的JavaScript教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号