
本教程将详细介绍如何利用JavaScript和CSS,根据表格中设定的金额目标与当前总金额进行比较,动态更新表格行的背景颜色,并为已达成的目标添加视觉标记。通过清晰的HTML结构、模块化的CSS样式以及交互式的JavaScript逻辑,读者将学会如何构建一个响应式的数据展示表格,提升用户体验。
在数据可视化和用户界面设计中,根据数据的实时状态动态调整元素的样式是一种常见的需求。对于表格数据,尤其是涉及到进度或目标达成情况时,通过改变行背景色或添加图标可以直观地传达信息。本文将指导您如何使用纯前端技术(HTML、CSS、JavaScript)实现一个“金额目标”表格,使其能够根据当前总金额自动高亮已达成的目标行,并添加完成标记。
首先,我们需要一个清晰的HTML结构来承载表格数据和总金额显示。表格包含三列:序号(A/A)、金额目标($)和目标状态(GOAL)。总金额则显示在一个单独的元素中,以便JavaScript能够轻松获取其值。
<table id="table-id">
<thead>
<tr>
<th>A/A</th>
<th>$</th>
<th>GOAL</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>100</td>
<td></td>
</tr>
<tr>
<td>2</td>
<td>200.25</td>
<td></td>
</tr>
<tr>
<td>3</td>
<td>500</td>
<td></td>
</tr>
</tbody>
</table>
<h3>Total $<span id="money">200.25</span></h3>关键点:
立即学习“Java免费学习笔记(深入)”;
为了实现动态样式,我们需要定义基础表格样式以及两种特殊状态的样式:
table {
width: 75%;
border-collapse: collapse; /* 确保边框合并 */
margin-top: 20px;
}
th {
background-color: purple;
color: #f1f1f1;
font-size: 15px;
padding: 8px; /* 增加内边距 */
text-align: center;
}
tbody tr {
background-color: #376282; /* 默认行背景色 */
transition: background-color 0.3s ease; /* 添加过渡效果 */
}
td {
color: #fff;
font-size: 15px;
padding: 8px; /* 增加内边距 */
text-align: center;
border: 1px solid #2a4c63; /* 添加边框 */
}
#money {
background-color: gold;
color: blue;
font-size: 15px;
padding: 4px;
text-align: center;
display: inline-block; /* 使span能应用padding */
min-width: 80px; /* 确保显示完整 */
}
/* 动态样式 */
.green {
background-color: green;
}
.tick:after {
content: '✓'; /* 使用伪元素添加勾选标记 */
font-weight: bold;
color: #fff;
}关键点:
立即学习“Java免费学习笔记(深入)”;
JavaScript是实现动态行为的核心。它将负责读取总金额,遍历表格中的每个目标,比较数值,并根据比较结果动态添加或移除CSS类。
// 辅助函数:从DOM元素的文本内容中提取数字
function getNumber(el) {
// 使用parseFloat解析字符串,确保处理小数
return parseFloat(el.textContent);
}
// 1. 获取所有表格行和总金额元素
const rows = document.querySelectorAll('tbody tr');
const totalElement = document.querySelector('#money');
// 2. 解析总金额,确保其为数值类型
const totalAmount = getNumber(totalElement);
// 3. 遍历每一行,进行比较和样式更新
rows.forEach(row => {
// 获取当前行的金额目标单元格(第二列)
const goalAmountCell = row.querySelector('td:nth-child(2)');
// 获取当前行的目标状态单元格(第三列)
const statusCell = row.querySelector('td:nth-child(3)');
// 解析当前行的目标金额
const currentGoal = getNumber(goalAmountCell);
// 4. 判断目标是否达成
if (currentGoal <= totalAmount) {
// 如果目标金额小于或等于总金额,则认为目标达成
// 给整个行添加 'green' 类,改变背景色
row.classList.add('green');
// 给目标状态单元格添加 'tick' 类,显示勾选标记
statusCell.classList.add('tick');
}
// 如果未达成,则不进行任何操作,保持默认样式
});关键点:
立即学习“Java免费学习笔记(深入)”;
通过本教程,您已经学会了如何结合HTML、CSS和JavaScript,构建一个动态响应的表格。这种方法不仅提升了数据展示的直观性,也为用户提供了更好的交互体验。核心在于:清晰的HTML结构承载数据,模块化的CSS定义样式,以及强大的JavaScript逻辑驱动行为。掌握这些基本技术,您将能够创建出更多功能丰富、用户友好的网页应用。
以上就是JavaScript实现基于金额目标的表格动态样式更新教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号