JS修改元素属性的全面指南

一、JS修改元素属性的方法

修改元素属性是 web 开发过程中经常遇到的需求,而 JavaScript 作为前端三剑客之一,其重要性不言自明。下面介绍如何使用 JavaScript 去修改元素属性,方法主要有三种。

方法一:使用 DOM API 的属性更新方法

使用 DOM API 的属性更新方法是一种非常直观、易用的方式,我们可以通过 document 对象和其他 DOM 选择器获取到目标元素,然后通过修改其内置属性来实现元素属性修改。

// 获取目标元素
let element = document.querySelector('#target');

// 修改元素属性
element.src = 'img/new-img.jpg';

方法二:使用 setAttribute() 方法

setAttribute() 方法可以帮助我们设置任意名称和值的属性,比如修改一个元素的 aria-label 属性:

// 获取目标元素
let element = document.querySelector('#target');

// 修改元素属性
element.setAttribute('aria-label', 'new label');

方法三:使用 dataset 对象

dataset 对象可以帮助我们在 HTML 标签里进行自定义数据的存储和获取,通过其 API,我们也可以获得目标元素的属性值,进而修改元素属性。

// 获取目标元素的自定义数据
let data = document.querySelector('#target').dataset;

// 修改某个数据
data.customKey = 'new value';

二、JS修改样式中的属性值

样式是定义和渲染页面元素的重要组成部分,我们经常会需要修改或更新元素的样式属性值。以下介绍几种如何使用 JavaScript 修改样式值的方法。

方法一:修改内联样式

当我们需要修改一个内联样式时,可以直接使用 style 对象的属性来描述

// 获取目标元素
let element = document.querySelector('#target');

// 修改元素的背景色
element.style.backgroundColor = '#f1f1f1';

方法二:使用 setProperty() 函数

如果属性没有直接在内联样式中定义,我们需要使用 setProperty() 函数去修改其属性值:

// 获取目标元素
let element = document.querySelector('#target');

// 修改元素颜色
element.style.setProperty('color', 'green');

方法三:使用 CSSStyleSheet 对象

CSSStyleSheet 对象提供了一种修改元素属性的方法,使用该方式可以定位到真实的样式表,逐层查找目标属性。

// 获取当前样式表的引用
let stylesheet = document.styleSheets[0];

// 修改某个选择器下的样式
let rules = stylesheet.cssRules || stylesheet.rules;
rules[0].style.color = 'purple';

三、修改元素属性案例

下面从经典案例入手,针对常见需要修改元素属性的场景,给出详细的操作方法。

修改图片链接

// 获取目标元素
let element = document.querySelector('img');

// 修改图片链接
element.src = 'new-img.jpg';

修改输入框的占位符

// 获取目标元素
let element = document.querySelector('input');

// 修改输入框的占位符
element.placeholder = '新的占位符';

修改 a 标签的 href 属性

// 获取目标元素
let element = document.querySelector('a');

// 修改 a 标签的 href 属性
element.href = 'https://www.example.com';

四、JS修改HTML元素内容

修改DOM元素的内容很常见,下面介绍三种实现方式。

使用 innerHTML

// 获取目标元素
let element = document.querySelector('#target');

// 修改元素内容
element.innerHTML = '新的内容';

使用 textContent

// 获取目标元素
let element = document.querySelector('#target');

// 修改元素内容
element.textContent = '新的文本';

使用 DOM API

// 获取目标元素
let element = document.querySelector('#target');

// 清空子元素
while (element.hasChildNodes()) {
  element.removeChild(element.lastChild);
}

// 插入新的文本
let textNode = document.createTextNode('新的文本');
element.appendChild(textNode);

五、JS修改HTML元素属性的方法

修改元素属性值的方式比较多,下面介绍三种不同的方法。

使用 getAttribute() 和 setAttribute()

// 获取目标元素的属性
let element = document.querySelector('#target');
let oldValue = element.getAttribute('data-src');

// 修改元素属性
element.setAttribute('data-src', 'new-value');

修改 HTML5 自定义数据

// 获取目标元素的 HTML5 数据
let element = document.querySelector('#target');
let oldValue = element.dataset.customKey;

// 修改元素数据
element.dataset.customKey = 'new-value';

使用 classList 属性

// 获取目标元素的 class
let element = document.querySelector('#target');
let classes = element.classList;

// 添加新的 class
classes.add('new-class');

// 删除旧的 class
classes.remove('old-class');

六、JS修改伪元素样式

伪元素本质上是一种特殊的 CSS 选择器,虽然无法通过普通的 DOM API 进行获取和修改,但是可以通过修改其绑定的 CSS 规则来完成

// 获取样式表对象和要修改的选择器
let stylesheet = document.styleSheets[0];
let selector = '.example::before';

// 修改伪元素样式
let rules = stylesheet.cssRules || stylesheet.rules;
rules[0].style.content = '""';
rules[0].style.backgroundColor = 'red';

七、原生JS修改元素CSS属性

直接通过 JavaScript 去操作 CSS 样式通常需要看到很多重复的代码,不仅容易出错,而且代码可读性也不高。而使用类库和框架,可以大大减少操作 CSS 的代码量,减少出错的可能性。

// 获取目标元素
let element = document.querySelector('#target');

// 定义样式对象
let styles = {
  backgroundColor: 'red',
  color: 'white',
  fontSize: '16px'
};

// 应用样式
Object.assign(element.style, styles);

八、JS修改元素内容和样式

有时候需要同时修改元素的内容和样式,以下是两种同时修改的方案。

修改样式和内容

// 获取目标元素
let element = document.querySelector('#target');

// 定义新的样式和内容
let newStyles = {
  backgroundColor: 'red',
  color: 'white',
  fontSize: '16px'
};
let newContent = '新的内容';

// 应用样式和内容
Object.assign(element.style, newStyles);
element.innerHTML = newContent;

修改样式和内容(使用 jQuery)

// 使用 jQuery 获取目标元素
let $element = $('#target');

// 定义新的样式和内容
let newStyles = {
  'background-color': 'red',
  'color': 'white',
  'font-size': '16px'
};
let newContent = '新的内容';

// 应用样式和内容
$element.css(newStyles);
$element.html(newContent);

九、JS修改元素属性值的注意事项

需要注意的是,修改元素属性值是具有局限性的,因为有些属性值无法实时更新。

修改 value 属性可能无法实时更新

对 input 元素的 value 属性进行修改时,并不能保证修改后就能立即获取到新的值,有时候需要等待浏览器渲染完成才能获取。

// 获取目标元素
let element = document.querySelector('input');

// 修改 input 的 value
element.value = 'new value';

// 立即获取 value 值,可能返回的依然是旧的值
let value = element.value;

修改样式属性可能可靠性不高

通过 JavaScript 动态修改样式属性时,可能会受到 CSS 规则和浏览器支持的限制,因此可靠性不高。

// 获取目标元素
let element = document.querySelector('div');

// 使用 JavaScript 修改样式,但可能会被浏览器标记为“弱实现”规则
element.style.background = 'red';

参考资料

1. https://www.w3schools.com/js/js_htmldom_elements.asp
2. https://developer.mozilla.org/zh-CN/docs/Web/API/ElementCSSInlineStyle/setProperty
3. https://www.sitepoint.com/dom-manipulation-vanilla-javascript-no-jquery/

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/238202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:10
下一篇 2024-12-12 12:10

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • 运维Python和GO应用实践指南

    本文将从多个角度详细阐述运维Python和GO的实际应用,包括监控、管理、自动化、部署、持续集成等方面。 一、监控 运维中的监控是保证系统稳定性的重要手段。Python和GO都有强…

    编程 2025-04-29
  • Python应用程序的全面指南

    Python是一种功能强大而简单易学的编程语言,适用于多种应用场景。本篇文章将从多个方面介绍Python如何应用于开发应用程序。 一、Web应用程序 目前,基于Python的Web…

    编程 2025-04-29
  • Python wordcloud入门指南

    如何在Python中使用wordcloud库生成文字云? 一、安装和导入wordcloud库 在使用wordcloud前,需要保证库已经安装并导入: !pip install wo…

    编程 2025-04-29
  • Python小波分解入门指南

    本文将介绍Python小波分解的概念、基本原理和实现方法,帮助初学者掌握相关技能。 一、小波变换概述 小波分解是一种广泛应用于数字信号处理和图像处理的方法,可以将信号分解成多个具有…

    编程 2025-04-29
  • Python字符转列表指南

    Python是一个极为流行的脚本语言,在数据处理、数据分析、人工智能等领域广泛应用。在很多场景下需要将字符串转换为列表,以便于操作和处理,本篇文章将从多个方面对Python字符转列…

    编程 2025-04-29
  • Python初学者指南:第一个Python程序安装步骤

    在本篇指南中,我们将通过以下方式来详细讲解第一个Python程序安装步骤: Python的安装和环境配置 在命令行中编写和运行第一个Python程序 使用IDE编写和运行第一个Py…

    编程 2025-04-29
  • Python起笔落笔全能开发指南

    Python起笔落笔是指在编写Python代码时的编写习惯。一个好的起笔落笔习惯可以提高代码的可读性、可维护性和可扩展性,本文将从多个方面进行详细阐述。 一、变量命名 变量命名是起…

    编程 2025-04-29
  • Python遍历集合中的元素

    本文将从多个方面详细阐述Python遍历集合中的元素方法。 一、for循环遍历集合 Python中,使用for循环可以遍历集合中的每个元素,代码如下: my_set = {1, 2…

    编程 2025-04-29
  • FusionMaps应用指南

    FusionMaps是一款基于JavaScript和Flash的交互式地图可视化工具。它提供了一种简单易用的方式,将复杂的数据可视化为地图。本文将从基础的配置开始讲解,到如何定制和…

    编程 2025-04-29

发表回复

登录后才能评论