---
tags: Javascript,
disqus: hackmd
---
# javascript className的操作
在JQuery裡,我假設要對標籤新增className,
可以用addClass()這個方法來實現,element.addClass();
刪除className呢?
可以用removeClass(),element.removeClass();
## add、remove
那如果今天用JS要怎麼樣去做到新增刪除className的動作?
element.classList.add();
element.classList.remove();
---
## hasClass()
在jQ中,常常會用hasClass(),
用來去判斷或增加className上去,或是去判斷現在的狀態是什麼要不要執行某些事件,
在JS中要怎麼去達到在JQ用hasClass()這樣的方法去完成?
用自定義屬性去完成?
例如
``` HTML=
var a = document.getElementById('logo');
a.isShow = true;
a.onclick = function(){
if(a.isShow == true){
a.classList.add('purple');
}else {
a.classList.remove('purple');
}
a.isShow = !a.isShow;
//上面的if判斷式也可以改成用三元運算子去做
//a.isShow = true ? a.classList.add('purple') : a.classList.remove('purple');
}
```
例如
``` HTML=
var oBtn = document.querySelector('.btn');
var oBody = document.body;
var show = 0;
oImage.onclick = function(){
for (var i = 0; i < oBody.classList.length; i++) {
if (oBody.classList[i] == 'zoom-in') {
show = 1;
break;
} else {
show = 0;
}
}
if (show == 1) {
oBody.classList.remove('zoom-in');
show = 0;
} else {
oBody.classList.add('zoom-in');
show = 1;
}
}
//click時先跑迴圈判斷body有沒有'zoom-in'
//有,就把show = 1 (hasClass() == true)
//無,就把show = 0 (hasClass() == false)
//接著再判斷show是0(刪除class)或1(新增class)
```
## contains
不過其實還有一個簡單的方法叫做contains他也是classList的其中一個方法
```javascript=
var element = document.getElementById('myForm').classList.contains("myForm");
element.classList.contains('myForm');
// 如果myForm這個element有myForm這個class name那就會返回ture
// 否則返回false
```
## toggle、item
這兩個方法還沒用過,所以就不知道了
---
參考文章
[Element.classList](https://developer.mozilla.org/zh-TW/docs/Web/API/Element/classList)
---
###### tags: `Javascript` `class` `hasclass` `classname` `addClass` `removeClass` `contains`