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')