H5新增屬性classList
h5中新增了一個classList,原生js可以通過它來判斷獲取dom節點有無某個class。
classList是html元素對象的成員,它的使用非常簡單,比如
console.log(document.body.classList);
目前已知classList API有length,item,add,remove,toggle,contains
length
靜態屬性。可以獲取元素類名的個數,使用方式:
var len = document.body.classList.length;
item( Number )
方法。可以獲取元素的類名,接受一個參數,即數字索引。使用方式:
//如果index超出范圍,則返回null
var cls = document.body.classList.item(index);
add( String [, String] )
方法。可以給元素添加類名,就像jquery中的addClass()。使用方式:
document.body.classList.add('myclass');
//遺憾的是,它一次性只能增加一個類,比如以下方式將會報錯
//document.body.classList.add('class1 class2');
remove( String [,String] )
方法。可以將元素的類名刪除,就像jquery中的removeClass()。和add()方法一樣,一次只能刪除一個類名。使用方式:
document.body.classList.remove('myclass');
toggle( String [, force] )
方法。可以給元素交替增加類名和刪除類名,就像jquery中的toggleClass()。
當只有一個參數時:切換 class value,即如果類存在,則刪除它並返回false,如果不存在,則添加它並返回true。
當存在第二個參數時:如果第二個參數的計算結果為true,則添加指定的類值,如果計算結果為false,則刪除它。
使用方式:
document.body.classList.toggle('myclass');
contains( String )
方法。可以檢測判斷元素是否包含某個類名,返回false或true。使用方式:
document.body.classList.contains('myclass'); //返回true或者false
示例
// div是具有class =“foo bar”的<div>元素的對象引用
div.classList.remove("foo");
div.classList.add("anotherclass");
// 如果visible被設置則刪除它,否則添加它
div.classList.toggle("visible");
// 添加/刪除 visible,取決於測試條件,i小於10
div.classList.toggle("visible", i < 10);
alert(div.classList.contains("foo"));
//添加或刪除多個類
div.classList.add("foo","bar");
div.classList.remove("foo", "bar");
H5在移動端的兼容性相對來說已經很不錯,在不用jquery的時候,使用H5的新屬性,可以省下不少功夫的
另外判斷dom節點有無某個class的方法可以通過getAttribute()這個方法。即
<html>
<head>
</head>
<body>
<div>
<p>1</p>
<p class="test">2</p>
<p>3</p>
</div>
<script>
var p = document.getElementsByTagName('p');
for(var i = 0;i <p.length;i++){
//方法一
if(p[i].className=='test'){
console.log(p[i].innerHTML)
}
//方法二,用getAttribute()這個方法
//if(p[i].getAttribute("class")=='test'){
//console.log(p[i].innerHTML);
//}
}
</script>
</body>
</html>