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) {
  return str.replace(/ (.+) /, '$1');
}
function hasClass(node, klass) {
  var classes = ' ' + node.className.replace('\\s', ' ') + ' ';
  
  if ( classes.indexOf(' ' + klass + ' ') < 0 ) { 
    return false; 
  }
  
  return true;
}
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(" " + klass + "(?= )", 'g');
    
    node.className = trim( classes.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 b b b b b b c');
removeClass(testDelete, 'b');
l(testDelete.className);
// проверка других пробельных символов
var testSpaces = createNode('div', "a\nb\nc\nd");
l(hasClass(testSpaces, "b") ? 'yes (must be this)' : 'no');
removeClass(testSpaces, 'a');
l(testSpaces.className);
Output

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

Dismiss x
public
Bin info
anonymouspro
0viewers