0

0

基于文本内容动态改变HTML元素背景色的JavaScript教程

DDD

DDD

发布时间:2025-12-03 11:05:17

|

746人浏览过

|

来源于php中文网

原创

基于文本内容动态改变HTML元素背景色的JavaScript教程

本教程详细讲解如何利用javascript实现根据html元素的文本内容动态改变其背景颜色。通过选取特定类名的所有元素,并使用循环结构结合条件判断(如`switch`语句),我们可以在页面加载时自动为这些元素设置不同的视觉样式,从而提供直观的状态反馈,适用于如库存状态、订单状态等多种场景。

在现代网页开发中,根据数据状态动态更新用户界面是常见的需求。例如,我们可能需要根据某个商品是“Available”(有货)、“Reserved”(已预订)还是“Selled”(已售罄)来改变其显示区域的背景颜色,以提供即时且直观的视觉反馈。本教程将指导您如何使用纯JavaScript实现这一功能,确保在页面加载时自动遍历并更新所有相关元素。

核心原理

实现此功能主要涉及以下几个JavaScript核心概念:

  1. DOM元素选择: 获取页面上所有具有特定CSS类的HTML元素。
  2. 元素遍历: 针对获取到的每一个元素执行相同的逻辑。
  3. 文本内容读取: 获取元素的内部文本。
  4. 条件判断: 根据元素的文本内容应用不同的样式。
  5. 事件监听: 确保在页面内容完全加载后执行此逻辑。

实现步骤与代码示例

我们将创建一个JavaScript函数,该函数将完成上述所有操作,并将其绑定到页面的加载事件上。

1. HTML结构示例

假设我们有多个div元素,它们都带有disponibilite_mh这个CSS类,并且其内部文本表示不同的状态。

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

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态背景色示例</title>
    <style>
        /* 可选的初始样式 */
        .disponibilite_mh {
            padding: 10px;
            margin: 5px;
            border: 1px solid #ccc;
            display: inline-block; /* 为了更好地展示效果 */
            min-width: 100px;
            text-align: center;
            color: #333;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <h1>商品状态列表</h1>
    <div class="disponibilite_mh">Available</div>
    <div class="disponibilite_mh">Reserved</div>
    <div class="disponibilite_mh">Selled</div>
    <div class="disponibilite_mh">Unknown Status</div>
    <div class="disponibilite_mh">Available</div>

    <script src="script.js"></script> <!-- 引入您的JavaScript文件 -->
</body>
</html>

2. JavaScript功能实现

我们将创建一个名为changeBackgroundColor的函数,它将:

一帧秒创
一帧秒创

基于秒创AIGC引擎的AI内容生成平台,图文转视频,无需剪辑,一键成片,零门槛创作视频。

下载
  • 获取所有类名为disponibilite_mh的元素。
  • 遍历这些元素。
  • 根据每个元素的innerText(内部文本)来设置其backgroundColor。
  • 为未匹配的文本设置一个默认背景色。
// script.js
function changeBackgroundColor() {
    // 1. 获取所有类名为 "disponibilite_mh" 的元素
    // document.getElementsByClassName 返回一个 HTMLCollection (类似数组)
    const elements = document.getElementsByClassName("disponibilite_mh");

    // 2. 遍历所有获取到的元素
    // 使用 for...of 循环可以方便地迭代 HTMLCollection 或 NodeList
    for (let element of elements) {
        // 3. 根据元素的内部文本内容进行条件判断
        switch (element.innerText.trim()) { // 使用 .trim() 移除可能的空白字符
            case 'Available':
                element.style.backgroundColor = 'green'; // 有货显示绿色
                element.style.color = 'white'; // 字体颜色改为白色,提高对比度
                break;
            case 'Reserved':
                element.style.backgroundColor = 'orange'; // 已预订显示橙色
                element.style.color = 'white';
                break;
            case 'Selled':
                element.style.backgroundColor = 'red'; // 已售罄显示红色
                element.style.color = 'white';
                break;
            default:
                // 4. 对于不匹配任何已知状态的文本,设置一个默认背景色
                element.style.backgroundColor = 'white';
                element.style.color = '#333';
        }
    }
}

// 5. 将函数绑定到 window.onload 事件,确保在页面完全加载后执行
// window.onload 会在所有内容(包括图片、脚本等)加载完成后触发
window.onload = changeBackgroundColor;

注意事项与最佳实践

  1. window.onload vs DOMContentLoaded:

    • window.onload:在整个页面(包括所有图片、样式表、脚本等)加载完成后触发。如果页面内容很多,可能会有延迟。
    • document.addEventListener('DOMContentLoaded', function() { ... });:在DOM结构完全加载和解析后立即触发,无需等待样式表、图片等资源加载。对于仅操作DOM的脚本,通常推荐使用DOMContentLoaded以获得更快的执行速度。在本例中,两者都可以工作,但如果追求极致性能,DOMContentLoaded是更好的选择。
    // 使用 DOMContentLoaded 的示例
    document.addEventListener('DOMContentLoaded', changeBackgroundColor);
  2. CSS类管理样式: 直接通过element.style.backgroundColor设置样式虽然有效,但在大型项目中可能导致样式难以维护。更推荐的做法是定义不同的CSS类,然后通过JavaScript添加或移除这些类。

    CSS部分:

    .status-available { background-color: green; color: white; }
    .status-reserved { background-color: orange; color: white; }
    .status-selled { background-color: red; color: white; }
    .status-default { background-color: white; color: #333; }

    JavaScript部分:

    function changeBackgroundColorWithClasses() {
        const elements = document.getElementsByClassName("disponibilite_mh");
        for (let element of elements) {
            // 先移除所有可能的状态类,确保每次只应用一个
            element.classList.remove('status-available', 'status-reserved', 'status-selled', 'status-default');
    
            switch (element.innerText.trim()) {
                case 'Available':
                    element.classList.add('status-available');
                    break;
                case 'Reserved':
                    element.classList.add('status-reserved');
                    break;
                case 'Selled':
                    element.classList.add('status-selled');
                    break;
                default:
                    element.classList.add('status-default');
            }
        }
    }
    document.addEventListener('DOMContentLoaded', changeBackgroundColorWithClasses);

    这种方法使得样式与行为分离,更易于维护和扩展。

  3. 文本内容处理: 在比较文本内容时,建议使用trim()方法去除字符串两端的空白字符,以避免因为意外的空格或换行符导致匹配失败。同时,考虑大小写敏感性。如果文本可能出现大小写不一致的情况(例如“available” vs “Available”),可以先将其转换为统一大小写再进行比较(如element.innerText.trim().toLowerCase())。

总结

通过上述教程,您已掌握如何使用JavaScript动态地根据HTML元素的文本内容改变其背景颜色。这个技术对于提升网页的交互性和用户体验非常有用,尤其是在展示各种状态信息时。通过选择合适的DOM事件监听器和采用CSS类来管理样式,您可以构建出更健壮、更易于维护的动态网页应用。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

569

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

441

2024.03.13

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1566

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

649

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1228

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1184

2024.04.29

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号