一 寫個函數然后傳入對象元素跟樣式名字,判定是否為空,如果不為空就賦值樣式名字;
function addclass(elm,newclass){ var c = elm.className; if(c!="") elm.className=newclass; }
二 寫個函數然后傳入對象元素跟需要添加到樣式名字,判定是否為空,如果為空就賦值,否則就加個空格再賦值;
function addclass(elm,newclass){ var c = elm.className; elm.className = (c =="") ? newclass : c+' '+newclass; }
三 傳入對象元素跟樣式名字,然后把elm.className看成用“ ”(空格)分割的字符串,用split去除空格變成數組,然后用push方法添加樣式到數組中,用join添加空格變成字符串再賦值給元素的class,很獨特很棒的方法。
function addclass(elm,newclass){ var classes = elm.className.split(' '); classes.push(newclass); elm.className = classes.join(' '); }
然而,我覺得有點不足,假如元素本來就有newclass這類名,那怎么辦?就像這樣:
<div class="div1 div2">
然后我想添加個div2類給這個div,如果用第三種方法,雖然不會出錯,但頁面顯示會變成這樣<div class="div1 div2 div2">,於是我用第四種方法:
四 繼承第三種方法的優勢,在其基礎上做了個循環判定,保證沒有重復的名字存在。
function zhen(obj,claName){ var cla=obj.className.split(" "); for(var i=0;i<cla.length;i++) { if(cla[i]==claName) return; } cla.push(claName); obj.className=cla.join(" "); }
jquery添加類極易,一般工作用jquery添加,在此不贅述。