原生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>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908429.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908429.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908429.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

九.C++ 對引用的學習

一.基本概念 引用即內存的別名 int a 10; int& b a; 引用本身不占用內存&#xff0c;并非實體&#xff0c;對引用的所有操作都是在對目標內存進行操作 引用必須初始化&#xff0c;且不能更換對象 int c 5; b c; // 僅僅是在對引用的目標內存進行賦值 #include <ios…

7.2.1_順序查找

知識總覽&#xff1a; 順序查找&#xff1a; 算法思想&#xff1a; 從頭到腳挨個找或者從腳到頭挨個找適用于線性表(順序存儲和鏈式存儲都適用)&#xff0c;又叫線性查找 實現&#xff1a; 1個數組elem指向數組的起始位置&#xff0c;索引從0開始遍歷數組直到找到目標值返回…

視覺SLAM基礎補盲

3D Gaussian Splatting for Real-Time Radiance Field Rendering SOTA方法3DGS contribution傳統重建基于點的渲染NeRF 基礎知識補盲光柵化SFM三角化極線幾何標準的雙目立體視覺立體匹配理論與方法立體匹配的基本流程李群和李代數 李群和李代數的映射李代數的求導李代數解決求導…

如何利用 Redis 實現跨多個無狀態服務實例的會話共享?

使用 Redis 實現跨多個無狀態服務實例的會話共享是一種非常常見且有效的方案。無狀態服務本身不存儲會話信息&#xff0c;而是將用戶的會話數據集中存儲在外部存儲中&#xff08;如 Redis&#xff09;&#xff0c;這樣任何一個服務實例都可以通過查詢外部存儲來獲取和更新用戶的…

《chipyard》docker使用

一、啟動/重啟服務 二、登入/退出 容器對象查看 sudo docker ps -a # 查看容器列表 登入已例化的容器 sudo docker exec -it -u root 737ed3ddd5ff bash # 737ed3ddd5ff<容器名稱/ID> 三、容器編輯 刪除單個容器 sudo docker stop <容器ID> #停止容器 s…

瀏覽器工作原理06 [#]渲染流程(下):HTML、CSS和JavaScript是如何變成頁面的

引用 瀏覽器工作原理與實踐 簡單回顧下上節前三個階段的主要內容&#xff1a;在HTML頁面內容被提交給渲染引擎之后&#xff0c;渲染引擎首先將HTML解析為瀏覽器可以理解的DOM&#xff1b;然后根據CSS樣式表&#xff0c;計算出DOM樹所有節點的樣式&#xff1b;接著又計算每個元素…

AI書簽管理工具開發全記錄(十三):TUI基本框架搭建

文章目錄 AI書簽管理工具開發全記錄&#xff08;十三&#xff09;&#xff1a;TUI基本框架搭建前言 &#x1f4dd;1.TUI介紹 &#x1f50d;2. 框架選擇 ??3. 功能梳理 &#x1f3af;4. 基礎框架搭建??4.1 安裝4.2 參數設計4.3 繪制ui4.3.1 設計結構體4.3.2 創建頭部4.3.3 創…

CC7利用鏈深度解析

CommonsCollections7&#xff08;CC7&#xff09;是CC反序列化利用鏈中的重要成員&#xff0c;由Matthias Kaiser在2016年發現。本文將從底層原理到實戰利用&#xff0c;全面剖析這條獨特而強大的利用鏈。 一、CC7鏈技術定位 1.1 核心價值 無第三方依賴&#xff1a;僅需JDK原…

openvino使用教程

OpenVINO使用教程 本專欄內容支持平臺章節計劃 本專欄內容 OpenVINO 是一款開源工具包&#xff0c;用于在云端、本地和邊緣部署高性能 AI 解決方案。我們可以使用來自最熱門模型框架的生成式和傳統 AI 模型來開發應用程序。充分利用英特爾 硬件的潛力&#xff0c;使用openvino…

ESP8266(NodeMcu)+GPS模塊+TFT屏幕實現GPS碼表

前言 去年寫過一篇關于使用esp8266(nodemcu)gps模塊oled屏幕diy的gps定位器的文章.點擊回顧 .無奈OLED屏幕太小了,最近剛好有時間又折騰使用TFT屏幕diy了一款gps碼表 效果如圖 材料準備 依舊是請出我們的兩位老演員 nocdmcu一塊. GPS定位模塊(我買的大夏龍雀的DX-GP10-GP…

解決獲取視頻第一幀黑屏問題

文章目錄 解決獲取視頻第一幀黑屏問題核心代碼 解決獲取視頻第一幀黑屏問題 廢話不多說&#xff0c;直接上代碼&#xff1a; <script setup> const status ref(請點擊“添加視頻”按鈕添加視頻) const videoElement ref(document.createElement(video)) const curren…

通過BUG(prvIdleTask、pxTasksWaitingTerminatio不斷跳轉問題)了解空閑函數(prvIdleTask)和TCB

一、前言與問題 在基于 FreeRTOS 的嵌入式系統中&#xff0c;我使用 STM32F1 開發一個 MQTT 客戶端應用&#xff0c;涉及兩個主要任務&#xff1a; ATRecvParser&#xff1a;負責解析 Wi-Fi 模塊的 AT 命令響應&#xff08;如 OK、ERROR 和 IPD 數據&#xff09;。MQTT_Clien…

繼MySQL之后的技術-JDBC-從淺到深-02

目錄 概念 編程六部曲 SQL注入和statement 工具類的封裝 JDBC事務 模糊查詢 批處理 數據庫連接池 Apache-DBUtils BasicDao 概念 JDBC為訪問不同的數據庫提供了統一的接口&#xff0c;為使用者屏蔽了細節問題。 Java程序員使用JDBC&#xff0c;可以連接任何提供了JD…

【配置 YOLOX 用于按目錄分類的圖片數據集】

現在的圖標點選越來越多&#xff0c;如何一步解決&#xff0c;采用 YOLOX 目標檢測模式則可以輕松解決 要在 YOLOX 中使用按目錄分類的圖片數據集&#xff08;每個目錄代表一個類別&#xff0c;目錄下是該類別的所有圖片&#xff09;&#xff0c;你需要進行以下配置步驟&#x…

淺談python如何做接口自動化

工具與環境準備 開發工具 PyCharm專業版&#xff1a;支持項目視圖、代碼導航、調試功能和主流框架開發官方資源&#xff1a;JetBrains PyCharm 數據庫操作 使用mysqlclient庫操作MySQL&#xff08;Django官方推薦&#xff09;安裝命令&#xff1a;pip install mysqlclient1.3.…

知識圖譜技術概述

一、概述 知識圖譜&#xff08;Knowledge Graph&#xff09; 是一種基于圖結構的語義網絡&#xff0c;用于表示實體及其之間的關系&#xff0c;旨在實現更智能的知識表示和推理。它通過將現實世界中的各類信息抽象為 “實體-關系-實體” 的三元組結構&#xff0c;構建出復雜的知…

NodeJS Koa 后端用戶會話管理,JWT, Session,長短Token,本文一次性講明白

前言 前幾天&#xff0c;我寫了一篇文章&#xff0c;《我設計的一個安全的 web 系統用戶密碼管理流程》。其中著重點是講的如何利用非對稱加密進行安全的設計&#xff0c;并在講述了原理之后&#xff0c;又寫了 《node 后端和瀏覽器前端&#xff0c;有關 RSA 非對稱加密的完整…

0.5S 級精度背后:DJSF1352-RN-6 如何讓儲能電站的每 1kWh 都「有跡可循」?

1、背景 在能源轉型的時代洪流里&#xff0c;大型儲能電站作為保障電網穩定運行、平衡能源供需的核心基礎設施&#xff0c;其戰略價值愈發凸顯。而儲能電站的高效運轉&#xff0c;始終離不開精準的電能計量體系支撐。今日為您重點推介一款針對 1500V 儲能系統研發的專業電能表…

Linux運維筆記:服務器安全加固

文章目錄 背景加固措施1. 修改用戶密碼2. 使用公鑰認證替代密碼登錄3. 強化系統安全4. 掃描與清理殘留威脅5. 規范軟件管理&#xff08;重點&#xff09; 注意事項總結 提示&#xff1a;本文總結了大學實驗室 Linux 電腦感染挖礦病毒后的安全加固措施&#xff0c;重點介紹用戶密…

Pycharm 配置解釋器

今天更新了一版pycharm&#xff0c;因為很久沒有配置解釋器了&#xff0c;發現一直失敗。經過來回試了幾次終于成功了&#xff0c;記錄一下過程。 Step 1 Step 2 這里第二步一定要注意類型要選擇python 而不是conda。 雖然我的解釋器是conda 里面建立的一個環境。挺有意思的