您的位置:

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/

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

2023-05-18
js获取classname后修改属性(js根据classna

本文目录一览: 1、js 怎么通过class改变样式 2、js和jq怎么修改className然后怎么能对其className操作 3、js获取ClassName后,怎样设置元素宽度 4、现在自学Ja

2023-12-08
js修改cdn(js修改元素内容)

本文目录一览: 1、jQuery Cookie.js cdn 失效了怎么换? 2、js文件cdn后要注意哪些问题 3、如何将大量的HTML中的js和css整体的切换到cdn的服务器上去 4、creat

2023-12-08
JS修改属性详解

2023-05-20
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
js修改cssimportant的简单介绍

本文目录一览: 1、js如何直接修改css里面的属性值呢? 2、笔记:JS设置CSS样式的几种方式 3、如何用JS修改已加载的CSS样式表样式? 4、JS修改CSS设置的样式 5、如何使用jquery

2023-12-08
JavaScript数组元素修改指南

2023-05-19
JS修改Class中某个属性

2023-05-18
javascript简要笔记,JavaScript读书笔记

2022-11-17
印象笔记记录java学习(Java成长笔记)

2022-11-12
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
js修改css生效(js修改css属性)

本文目录一览: 1、JS修改元素的CSS属性后是何时生效的 2、为什么网站JS和css文件修改完,第二天才生效? 3、如何用JS修改已加载的CSS样式表样式? JS修改元素的CSS属性后是何时生效的

2023-12-08
google修改js,Google修改密码手机

2023-01-03
python基础学习整理笔记,Python课堂笔记

2022-11-21
js批量修改css,js批量修改样式

本文目录一览: 1、js修改样式css有哪些方法呢? 2、如何用js修改已加载的多个css样式表样式 3、js中巧用cssText属性批量操作样式 4、JS修改CSS设置的样式 5、JS 动态修改CS

2023-12-08
达内web前端js笔记(达内jsd)

本文目录一览: 1、web前端里的js技术 2、《web前端笔记7》js字符—获取、查找、遍历、提取、替换方法总结 3、达内web前端开发讲的什么内容 4、2020年自学Web前端要掌握的知识点有哪些

2023-12-08
js修改css3,js修改css属性的方法

本文目录一览: 1、想用js修改css3的关键帧属性,但是不知道怎么写代码,代码如下。 2、原生JS设置CSS3样式时,怎么添加兼容性前缀( 3、用JS修改或创建CSS3 animation @key

2023-12-08
js当前元素加样式兄弟元素去掉(js修改元素样式的方法)

本文目录一览: 1、js中实现点击一个元素加边框,点击另一个元素去掉前一个元素边框,当前元素加边框? 2、js如何给目标元素的兄弟元素更改样式 3、js代码addClass和removeClass写在

2023-12-08
重学java笔记,java笔记总结

2022-11-23
javascript一句话笔记,javascript基本语句

2022-11-16