HTMLelement.className を利用しやすくしたつもりのコード
var ClassList = { 'contains' : (function () { return function ( node, css ) { var str = ' ' + node.className + ' '; if ( -1 < str.indexOf( ' ' + css + ' ' ) ) return true; var i = 0, k, keys = css.split(/ +/); while( k = keys[ i++ ] ) if(-1 == str.indexOf( ' ' + k + ' ' ) ) return false; return true; }; })(), 'add' : (function () { return function ( node, css ) { var i = 0, k, keys = css.split( / +/ ), buf = [ ], str = ' ' + node.className + ' '; while( k = keys[ i++ ] ) if( 0 > str.indexOf( ' ' + k + ' ' ) ) buf.push( k ); node.className += ' ' + buf.join( ' ' ); return buf; }; })(), 'item' : (function () { return function ( node, n ) { return node.className.split(/ +/)[n]; }; })(), 'remove' : (function () { return function ( node, css ) { var i = 0, k, keys = node.className.split( / +/ ), buf = [ ], str = ' ' + css + ' '; while( k = keys[ i++ ] ) if( 0 > str.indexOf( ' ' + k + ' ' ) ) buf.push( k ); node.className = buf.join( ' ' ); return buf; }; })(), 'toggle' : (function () { return function ( node, css ) { var i = 0, k, keys = css.split( / +/ ), buf = [ ], str = ' ' + node.className + ' '; while( k = keys[ i++ ] ) 0 > str.indexOf(' '+ k +' ') ? str += k + ' ': buf.push( k ); node.className = str; if( buf.length ) this.remove( node, buf.join( ' ' ) ); return node.className; }; })() };
って何するかこれだけでは、わからない人のために。
var e = document.getElementById( 'xxx' ); ClassList.add( e, 'abc def' );
classNameは、複数指定できるので、一部を削除したいときは
ClassList.remove(e, 'def')
呼び出すたびに、スイッチのように切り替えたいときは
ClassList.toggle(e, 'def')