Javascript中classList的基本使用方法

 更新时间:2023年10月31日 10:15:56   作者:小猫娃来啦  
classList 是一个非常实用的工具,可以让我们轻松地操作元素的类名,在使用 classList 时,我们可以通过 add、remove、toggle 和 contains 等方法来添加、删除、切换和检查类名,接下来我们详细学习一下classList的使用方法以及相关方法,感兴趣的朋友一起看看吧

前言

classList 是 JavaScript 中一个用于操作元素类名的东西,这个东西有很多好用的方法,可以让我们轻松地添加、删除、切换和检查元素的类名。接下来我们详细学习一下 classList 的使用方法以及相关方法。

一、classList 的基本使用

classList 是 Element 接口的一个属性,其返回值是一个 DOMTokenList 对象,该对象表示当前元素的类名列表。我们可以通过以下方式来获取一个元素的 classList:

const element = document.getElementById('myElement');
const classList = element.classList;

上述代码中,我们首先获取了一个 ID 为 myElement 的元素,然后通过 classList 属性获取了该元素的类名列表。

获取到 classList 后,我们可以使用以下方法来操作元素的类名:

add方法

add 方法用于向元素添加一个或多个类名。例如,我们可以使用以下代码向一个元素添加一个名为 active 的类名:

element.classList.add('active');

如果需要添加多个类名,可以在 add 方法中传入多个参数,例如:

element.classList.add('active', 'visible', 'highlight');

remove方法

remove 方法用于从元素中删除一个或多个类名。例如,我们可以使用以下代码从一个元素中删除名为 active 的类名:

element.classList.remove('active');

如果需要删除多个类名,可以在 remove 方法中传入多个参数,例如:

element.classList.remove('active', 'visible', 'highlight');

toggle方法

toggle 方法用于在元素中切换一个类名的状态。如果元素中已经存在该类名,则该类名将被删除;如果元素中不存在该类名,则该类名将被添加。例如,我们可以使用以下代码在一个元素中切换名为 active 的类名:

element.classList.toggle('active');

我们还可以在 toggle 方法中传入一个布尔值作为第二个参数,用于指定是否强制添加或删除类名。例如,以下代码将强制为一个元素添加名为 active 的类名:

element.classList.toggle('active', true);

contains方法

contains 方法用于检查元素中是否包含指定的类名。如果元素中包含该类名,则返回 true;否则返回 false。例如,我们可以使用以下代码检查一个元素中是否包含名为 active 的类名:
Copy

const hasActiveClass = element.classList.contains('active');

二、classList 的高级用法

除了基本的添加、删除、切换和检查类名的方法之外,classList 还提供了一些高级用法,可以让我们更加方便地操作元素的类名。

replace方法

replace 方法用于替换元素中的一个类名为另一个类名。例如,我们可以使用以下代码将一个元素中名为 oldClass 的类名替换为名为 newClass 的类名:

element.classList.replace('oldClass', 'newClass');

item方法

item 方法用于获取元素类名列表中指定索引位置的类名。例如,以下代码将获取一个元素的第二个类名:

const secondClass = element.classList.item(1);

需要注意的是,索引位置从 0 开始,因此上述代码中的 1 表示获取第二个类名。

length用法

length 属性用于获取元素类名列表的长度。例如,以下代码将获取一个元素的类名列表长度:

const classListLength = element.classList.length;

forEach方法

forEach 方法用于遍历元素的类名列表,并对每个类名执行指定的操作。例如,以下代码将输出一个元素的所有类名:

element.classList.forEach(className => {
  console.log(className);
});

需要注意的是,forEach 方法只在现代浏览器中得到支持,如果需要兼容旧版浏览器,可以使用 Array.prototype.forEach 方法来代替。

三、代码示例:

function createMenu(menuData) {
				const menuEl = document.createElement('ul');
				menuData.forEach(item => {
					const itemEl = document.createElement('li');
					const labelEl = document.createElement('span');
					labelEl.innerText = item.label;
					itemEl.appendChild(labelEl);
					if (item.children.length > 0) {
						labelEl.addEventListener('click', () => {
							if (itemEl.classList.contains('open')) {
								itemEl.classList.remove('open');
								itemEl.removeChild(itemEl.lastChild);
							} else {
								itemEl.classList.add('open');
								const submenuEl = createMenu(item.children);
								itemEl.appendChild(submenuEl);
							}
						});
					}
					menuEl.appendChild(itemEl);
				});
				return menuEl;
			}
			const menuEl = createMenu(menu);
			document.body.appendChild(menuEl);

以这段代码为例,很显然这是递归函数,里面用到了classList.contains('open') classList.remove('open') classList.add('open')实现了动态添加删除元素类名,而通过类名是否存在的状态来实现递归的树形菜单,非常精髓

四、总结

classList 是一个非常实用的工具,可以让我们轻松地操作元素的类名。在使用 classList 时,我们可以通过 add、remove、toggle 和 contains 等方法来添加、删除、切换和检查类名;还可以通过 replace、item、length 和 forEach 等方法来进行更高级的操作。需要注意的是,classList 只在现代浏览器中得到支持,如果需要兼容旧版浏览器,可以使用其他库或者手动操作元素的 className 属性来代替。

到此这篇关于Javascript中classList的基本使用的文章就介绍到这了,更多相关js classList内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Json Web Token在前后端实践思考分析

    Json Web Token在前后端实践思考分析

    这篇文章主要为大家介绍了Json Web Token在前后端实践思考分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Open and Print a Word Document

    Open and Print a Word Document

    Open and Print a Word Document...
    2007-06-06
  • JavaScript实现点击切换验证码及校验

    JavaScript实现点击切换验证码及校验

    这篇文章主要为大家详细介绍了JavaScript实现点击切换验证码及校验,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 聊聊JS ES6中的解构

    聊聊JS ES6中的解构

    这篇文章主要介绍了JS ES6中的解构,对解构感兴趣的同学,可以参考下
    2021-04-04
  • 纯js实现打字机效果

    纯js实现打字机效果

    这篇文章主要为大家详细介绍了纯js实现打字机效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果

    JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果

    这篇文章主要介绍了JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果,涉及javascript事件响应及针对页面元素属性的动态操作相关技巧,需要的朋友可以参考下
    2016-08-08
  • js实现点击按钮后给Div图层设置随机背景颜色的方法

    js实现点击按钮后给Div图层设置随机背景颜色的方法

    这篇文章主要介绍了js实现点击按钮后给Div图层设置随机背景颜色的方法,实例分析了javascript操作页面div元素属性及随机数的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 包含中国城市的javascript对象实例

    包含中国城市的javascript对象实例

    这篇文章主要介绍了包含中国城市的javascript对象,以一个javascript的json数据格式存储为例分析了javascript存储城市信息的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • JavaScript键盘事件超详细总结

    JavaScript键盘事件超详细总结

    这篇文章主要给大家介绍了关于JavaScript键盘事件的相关资料,键盘事件是指在网页中当用户按下键盘上的按键时所触发的事件,在JavaScript中可以通过监听键盘事件来实现一些交互效果,需要的朋友可以参考下
    2023-10-10
  • 如何通过JavaScript、css、H5实现简单的tab栏切换和复用功能

    如何通过JavaScript、css、H5实现简单的tab栏切换和复用功能

    tab切换在项目中也算是常用技术,一般实现tab切换都用js或者jq实现,下面这篇文章主要给大家介绍了关于如何通过JavaScript、css、H5实现简单的tab栏切换和复用功能的相关资料,需要的朋友可以参考下
    2022-11-11

最新评论