原生js操作元素类名(classList,classList.add...)

1、classList

classList属性是一个只读属性,返回元素的类名,作为一个DOMTokenList集合(用于在元素中添加,移除及切换css类)

length:返回类列表中类的数量,该属性是只读的

<style>

.lis {

width: 200px;

height: 100px;

background-color: skyblue;

}

.box {

width: 100px;

height: 100px;

border: 1px solid #e15671;

}

.red {

background: red;

}

.width {

width: 200px;

}

</style>

<body>

<ul>

<li class="lis red width">111</li>

</ul>

<div class="box"></div>

</body>

<script>

let box = document.querySelector('.box');

let list = box.classList;

console.log(list.length);//1

console.log(list);//DOMTokenList 'box', value: 'box'

let lists = document.querySelector(".lis");

let len = lists.classList;

console.info(len.length);//3

console.info(len);//DOMTokenList(3) 'lis', 'red', 'width', value: 'lis red width'

</script>

2、classList.add(className1,className2...);

添加一个或多个类名,如果指定的类名存在,则不添加

<style>

.mystyle {

width: 300px;

height: 50px;

background-color: skyblue;

color: white;

font-size: 25px;

}

.once{

padding: 20px;

border: 2px solid orange;

}

</style>

<body>

<button οnclick="myFun()">点我</button>

<div id="boss">

我是一个 div

</div>

</body>

<script>

//添加一个类样式

function myFun() {

let divCla = document.getElementById("boss");

let style = divCla.classList.add("mystyle");

}

//添加两个及两个以上类样式 类名用逗号','隔开

function myFun() {

let divCla = document.getElementById("boss");

let style = divCla.classList.add("mystyle","once");

}

</script>

3、classList.contains(className);

判断指定的类名是否存在,返回布尔值(true:存在;false:不存在)

<style>

.lis {

width: 200px;

height: 100px;

background-color: skyblue;

}

.red {

background: red;

}

.width {

width: 200px;

}

</style>

<body>

<ul>

<li class="lis red width">111</li>

</ul>

</body>

<script>

let lis = document.getElementsByClassName("lis")0;

let style = lis.classList.contains('red');

console.log(style);//true 存在类名

let style1 = lis.classList.contains('height');

console.log(style1);//false

</script>

4、classList.item(index);

返回索引值对应的类名 索引值在区间范围外 返回null

<style>

.lis {

width: 200px;

height: 100px;

background-color: skyblue;

}

.red {

background: red;

}

.width {

width: 200px;

}

</style>

<body>

<ul>

<li class="lis red width">111</li>

</ul>

</body>

<script>

//第一个类名 根据索引查询

let lis = document.getElementsByClassName("lis")0;

let className = lis.classList.item(0);

console.log(className);//lis

//第二个类名

let className2 = lis.classList.item(1);

console.log(className2);//red

</script>

5、classList.remove(className1,className2...);

移除一个或多个类名 移除不存在的类名,不会报错

<style>

.mystyle {

width: 300px;

height: 50px;

background-color: skyblue;

color: white;

font-size: 25px;

}

.once{

padding: 20px;

border: 2px solid orange;

}

</style>

<body>

<button οnclick="myFun()">点我</button>

<div id="boss" class="mystyle">

我是一个 div

</div>

</body>

<script>

function myFun() {

let box = document.querySelector('#boss');

let list = box.classList.remove("mystyle");

// 移除不存在的类名 不会报错

//let box = document.querySelector('#boss');

//let list = box.classList.remove("once");

}

</script>

6、classList.toggle(className, true \| false);

切换类名;

第一个参数为要移除的类名,并返回false;若该参数不存在则添加类名,返回true

第二个参数为布尔值,设置是否强制添加或移除类,不论类名是否存在

<style>

.mystyle {

width: 300px;

height: 50px;

background-color: skyblue;

color: white;

font-size: 25px;

}

.box {

width: 100px;

height: 100px;

border: 1px solid #e15671;

}

</style>

<body>

<button οnclick="myFun()">点我</button>

<div id="boss" class="mystyle">

我是一个 div

</div>

</body>

<script>

function myFun() {

//添加类名

let box = document.querySelector('#boss');

let list = box.classList.toggle("box");

//给两个值的时候

//移除类名

let removeList = box.classList.toggle('mystyle',false);

//添加类名

let addList = box.classList.toggle('box',true);

}

</script>

7、classList.replace( oldClassName,newClassName );

替换类名,返回布尔值,true表示替换成功

第一个参数为被替换的类名

第二个参数为要替换的新类名

<style>

.mystyle {

width: 300px;

height: 50px;

background-color: skyblue;

color: white;

font-size: 25px;

}

.box {

width: 100px;

height: 100px;

border: 1px solid #e15671;

}

</style>

<body>

<button οnclick="myFun()">点我</button>

<div id="boss" class="mystyle">

我是一个 div

</div>

</body>

<script>

function myFun() {

let box = document.querySelector('#boss');

let replace = box.classList.replace('mystyle','box');

}

</script>

相关推荐
Ai-_Man10 小时前
我需要批量导出Poe左边栏所有对话,而不是一条具体的对话内容,你们AI导出鸭可以吗?
开发语言·前端·javascript·人工智能·小程序
狮子座的男孩10 小时前
html+css基础:24、2D变换(位移/缩放/旋转/扭曲(了解)/多重变换/变换原点)
前端·css·经验分享·html·2d位移·原点变换·缩放/旋转/扭曲
u01110267510 小时前
Vue 页面离开后还在轮询?统一清理计时器、监听器与观察器
前端·javascript·vue.js
大猩猩X11 小时前
vue 表格组件 vxe-table 实现多行编辑,支持增删改查与校验
前端·javascript·vue.js·vxe-table
冒险的豆子12 小时前
Proxy & Vue 响应式(合并精简版,适合面试)
前端·javascript·vue.js
Java后端的Ai之路13 小时前
前端技术Vue-18-视图中的渲染
前端·javascript·vue.js
zttbee20 小时前
echarts图表tooltip色块失效
前端·javascript·echarts
子兮曰21 小时前
CSS 复现 23 种设计风格:从拟物到液态玻璃的成本阶梯与兜底写法【实战】
前端·css·视觉设计
虚无境1 天前
如何用AI帮我写出实用的插件
前端·javascript·ai编程
zimoyin1 天前
在 C# 里嵌入 JavaScript:用 Jint 做可热更新的自动化脚本(从入门到踩坑)
javascript·c#·自动化