原生js來實現對dom元素class的操作方法

jQuery操作class的方式非常強大

寫了一個利用原生js來實現對dom元素class的操作方法

1.addClass:為指定的dom元素添加樣式

2.removeClass:刪除指定dom元素的樣式

3.toggleClass:如果存在(不存在),就刪除(添加)一個樣式

4.hasClass:判斷樣式是否存在


下面為一toggleClass的測試例子

[html]?view plaincopy
  1. <style?type="text/css">??
  2. ????div.testClass{??
  3. ????????background-color:gray;??
  4. ????}??
  5. </style>??
  6. ??
  7. <script?type="text/javascript">??
  8. function?hasClass(obj,?cls)?{??
  9. ????return?obj.className.match(new?RegExp('(\\s|^)'?+?cls?+?'(\\s|$)'));??
  10. }??
  11. ??
  12. function?addClass(obj,?cls)?{??
  13. ????if?(!this.hasClass(obj,?cls))?obj.className?+=?"?"?+?cls;??
  14. }??
  15. ??
  16. function?removeClass(obj,?cls)?{??
  17. ????if?(hasClass(obj,?cls))?{??
  18. ????????var?reg?=?new?RegExp('(\\s|^)'?+?cls?+?'(\\s|$)');??
  19. ????????obj.className?=?obj.className.replace(reg,?'?');??
  20. ????}??
  21. }??
  22. ??
  23. function?toggleClass(obj,cls){??
  24. ????if(hasClass(obj,cls)){??
  25. ????????removeClass(obj,?cls);??
  26. ????}else{??
  27. ????????addClass(obj,?cls);??
  28. ????}??
  29. }??
  30. ??
  31. function?toggleClassTest(){??
  32. ????var?obj?=?document.?getElementById('test');??
  33. ????toggleClass(obj,"testClass");??
  34. }??
  35. </script>??
  36. ??
  37. <body>??
  38. ????<div?id?=?"test"?style?=?"width:250px;height:100px;">??
  39. ????????sssssssssssss??
  40. ????</div>??
  41. ????<input?type?=?"button"?value?=?"toggleClassTest"?onclick?=?"toggleClassTest();"?/>??
  42. </body>??

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

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

相關文章

python+selenium配置Edge瀏覽器

Chrome, Firefox只需要修改conftest.py文件中的 pytest.fixture(scopesession)def browser(): return BzwUtil.read_yml(config.yml,WEB_INFO,BROWSER) add option in pytest command line def pytest_addoption(parser): parser.addoption("--browser", actio…

JSON.parse和JSON.stringify方法

JSON.parse() JSON.parse()方法將json字符串轉化為Javascript值或對象。 語法 JSON.parse(text[,reviver]) 參數 text:要被解析成Javascript值的字符串 reviver:若是一個函數則規定了原始值(text)如何被解析改造&#xff0c;在被返回前。 示例 JSON.parse({}); //…

java面向對象:異常處理 —(18)

1. 異常的體系結構 java.lang.Throwable |-----java.lang.Error:一般不編寫針對性的代碼進行處理。|-----java.lang.Exception:可以進行異常的處理|------編譯時異常(checked)|-----IOException|-----FileNotFoundException|-----ClassNotFoundException|------運行時異常(un…

vue請求簡單配置

簡單記錄一下vue的http請求配置相關 測試環境請求接口設置:   1. config/dev.env.js添加&#xff1a;     module.exports merge(prodEnv, {       NODE_ENV: "development",       API_ROOT: "http://", //配置http請求頭     })…

【vue報錯】——listen EADDRINUSE :::8080 解決方案

問題原因&#xff1a; 此項錯誤表示 8080 端口被占用 解決方案一&#xff1a; 打開cmd 輸入&#xff1a;netstat -ano 查看所有端口信息&#xff0c;如圖&#xff0c;找到端口 8081&#xff0c;以及對應的 PID 輸入&#xff1a;tskill PID 即可殺死進程 解決方案二&#xff1a…

記錄_20190626

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result異常的解決方法 原來JAVA中如果用BigDecimal做除法的時候一定要在divide方法中傳遞第二個參數&#xff0c;定義精確到小數點后幾位&#xff0c;否則在不整除的情況下…

String與Array

public class Api {Testpublic void StringApi(){// equals() 判斷內容是否相同區分大小寫// equalsIgnoreCase() 判斷內容是否相同不區分大小寫// length() 獲取長度// charAt(int index) 獲取某個索引位置的字…

HTML與CSS布局技巧總結

很多人對CSS的布局有困惑&#xff0c;實際的應用場景中由于布局種類多難以選擇。今天我花些時間總結下自己對CSS布局的理解&#xff0c;分析下了解各種布局的優劣&#xff0c;同時希望能分享給初入前端的朋友們一些在布局上的經驗&#xff0c;如果有那些地方總結的不好&#xf…

當談論迭代器時,我談些什么?

花下貓語&#xff1a;之前說過&#xff0c;我對于編程語言跟其它學科的融合非常感興趣&#xff0c;但我還說漏了一點&#xff0c;就是我對于 Python 跟其它編程語言的對比學習&#xff0c;也很感興趣。所以&#xff0c;我一直希望能聚集一些有其它語言基礎的同學&#xff0c;一…

在Vue-cli項目中使用echarts

該示例使用 vue-cli 腳手架搭建 安裝echarts依賴 npm install echarts -S11 或者使用國內的淘寶鏡像&#xff1a; 安裝 npm install -g cnpm --registryhttps://registry.npm.taobao.org11 使用 cnpm install echarts -S11 創建圖表 全局引入 main.js // 引入echarts im…

Java的模板文件配置

Java的Mappers文件配置 <?xml version"1.0" encoding"UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.qfedu.…

Python爬蟲學習二

1、selenium自動測試工具 2、主要使用selenium的目的是跳過登錄驗證3、下載驅動器下載請求庫from selenium import webdriver import time#1、 直接在script文件夾中找驅動 driverwebdriver.Chrome() time.sleep(5) driver.close()#2、找到驅動路徑 #webdriver.Chrome(rD:\Pyth…

通過GitHub Pages創建個人主頁

登陸github,創建新倉庫&#xff0c;寫入名字, 這里要以github.io做后綴, 不然創建出來的不是GitHub Pages 打開終端, cd到自己想要的文件夾后clone到本地 git clone https://github.com/username/username.github.io 進入這個項目文件夾 cd username.github.io 把寫好HTML項目拷…

Spring IOC 配置文件模板

基于XML的普通設置 <?xml version1.0 encodingUTF-8 ?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springframework.org/schema/contex…

validate+jquery+ajax表單驗證

1.案例 1.1 Html form表單內容 <form class"cForm" id"cForm" method"post" action""> <p> <label for"user">用戶名</label> <input id"user" name"user" required minlen…

Html5做webapp中界面適配的問題總結

做一款軟件首先是要做出相應的界面&#xff0c;然而對于手機軟件開發者來說&#xff0c;大小各異的手機屏幕卻給我們帶來了不少的麻煩。HTML5技術在大家的心中要比傳統的Android/iOS/wp簡單的多&#xff0c;因為它的適配性和平臺跨越方面比較出色。在外看來卻不是那樣的&#x…

設置Maven下載鏡像源(直接替換其中的 settings.xml 內容即可)

<?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.0.…

P1576 最小花費

----------------------------------- 這道題就是圖論最短路&#xff0c;但是我們要改一下一些細節 比如說&#xff0c;因為這是算匯率&#xff0c;我們的初始化就要是0 我們還要改一改松弛操作 ----------------------------------- 還有&#xff0c;題目上給的是匯率&#xf…

css hack技術整理

做前端多年&#xff0c;雖然不是經常需要hack&#xff0c;但是我們經常會遇到各瀏覽器表現不一致的情況。基于此&#xff0c;某些情況我們會極不情愿的使用這個不太友好的方式來達到大家要求的頁面表現。我個人是不太推薦使用hack的&#xff0c;要知道一名好的前端&#xff0c;…

Hanoi雙塔問題

Hanoi雙塔問題 題目描述 給定A,B,C三根足夠長的細柱&#xff0c;在A柱上放有2n個中間有空的圓盤&#xff0c;共有n個不同的尺寸&#xff0c;每個尺寸都有兩個相同的圓盤&#xff0c;注意這兩個圓盤是不加區分的(下圖為n3的情形&#xff09;。現要將 這些國盤移到C柱上&#xff…