Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
function createNode(name, klasses) {  
    var n = document.createElement(name);
    n.className = klasses;
    return n;
}
function trim(str) {
  if (str.charAt(0) == ' ') {
    str = str.substring(1, str.length);
  }
  
  if ( str.charAt(str.length - 1) == ' ' ) {
    str = str.substring(0, str.length - 1);
  }
  
  return str;
}
function hasClass(node, klass) {
  var classes = ' ' + node.className.replace('\\s', ' ') + ' ';
  
  if ( classes.indexOf(' ' + klass + ' ') + 1 ) { 
    return true; 
  }
  
  return false;
}
function addClass(node, klass) {
  if ( !hasClass(node, klass) ) {
    if ( node.className.length !== 0 ) {
      node.className += ' ' + klass;
    } else {
      node.className = klass;
    }
  }
  
  return node;
}
function removeClass(node, klass) {
  if ( hasClass(node, klass) ) {
    var classes = ' ' + node.className + ' ',
        regexp = new RegExp("\\s" + klass + "\\s", 'g');
    
    node.className = trim( classes.replace(regexp, ' ').replace(regexp, ' ') );
  }
  
  return node;
}
function l(x) {
    console.log(x);
}
l(hasClass(createNode('div', 'test'), 'test')); // true
l(hasClass(createNode('div', 'test'), 'tes')); // false
l(hasClass(createNode('div', 'test1 test2'), 'tes')); // false
l(hasClass(createNode('div', 'test1 test2'), 'test1')); // true
l(hasClass(addClass(createNode('div', 'test test2'), 'tes'), 'tes')); 
var node = addClass(createNode('div', 'test test2'), 'tes');
console.log(node.className);
node = removeClass(createNode('div', 'test1 test2'), 'test1'); 
console.log(node.className);
var testDelete = createNode('div', 'a b b b c');
removeClass(testDelete, 'b');
l(testDelete.className);
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers