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>
<div class="outer">
  <div class="inner">
    
  </div>
</div>
</body>
</html>
 
var dom = {};
dom.rand = function(min, max) {
    if(max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    } else {
        return Math.floor(Math.random() * (min + 1));
    }
};
dom.trim = function(str) {
    return str.replace(/^\s+|\s+$/g, '');
};
dom.hasClass = function(node, klass) {
    var newClasses = (node.className).replace(/\s+/g, ' ');
    return (' ' + newClasses + ' ').indexOf(' ' + klass + ' ') > -1;
};
dom.addClass = function(node, klass) {
    if (!node.className) {
        node.className = klass;
    } else if (!this.hasClass(node, klass)) {
        node.className += ' ' + klass;
    }
};
dom.removeClass = function(node, klass) {
    if (node.className && dom.hasClass(node, klass)) {
        var newClasses = node.className.replace(new RegExp('(\\s+|^)' + klass + '(\\s+|$)', 'g'), ' ');
        node.className = this.trim(newClasses);
    }
};
dom.toggleClass = function(node, klass) {
    if (dom.hasClass(node, klass)) {
        dom.removeClass(node, klass);
    } else {
        dom.addClass(node, klass);
    }
};
dom.find = function(selector, context) {
  var space = selector.split(/\s+/);
  var part = {};
  var cases = [];
  var klass = [];
  for (var i = 0; i < space.length; i++) {
    cases[i] = {};
    if (new RegExp(/\.|\#/).test(space[i])) {
      cases[i].classes = space[i].match(/\.[a-zA-Z\-\_]+/gi);
      if (cases[i].classes != null) {
        for (var k = 0; k < cases[i].classes.length; k++) {
          cases[i].classes[k] = cases[i].classes[k].match(/[a-zA-Z\-\_]+/i)[0];
        }
      }
      cases[i].id = new RegExp(/\#([a-zA-Z\-\_]+)/i).exec(space[i])
      if (cases[i].id != null) {
        cases[i].id = cases[i].id[0].substr(1);
      }
      cases[i].tagName = new RegExp(/^[^\#\.][a-zA-Z\-\_]+(\.|\#)/).exec(space[i]);
      if (cases[i].tagName != null) {
        cases[i].tagName = cases[i].tagName[0].match(/[a-zA-Z]+/)[0];
      }
    } else if (new RegExp(/[a-zA-Z]+/).test(space[i])) {
      cases[i].tagName = space[i];
      cases[i].id = null;
      cases[i].classes = null;
    }
  }
  
  /* ТУТ Я ПЫТАЛСЯ НАПИСАТЬ ТО, ЧТО НУЖНО, НО ПОТОМ ПОНЯЛ, ЧТО ПРОВЕРОК ЗДЕСЬ БУДЕТ ОГРОМНОЕ КОЛИЧЕСТВО.
  for (var j = 0; j < cases.length; j++) {
    if (cases[j].id != null) {
      return document.getElementById(cases[j].id);
    }
    
    if (cases[j].tagName != null) {
      if (space.length < 2) {
        if (cases[j].classes != null) {
          context.getElementsByTagName(cases[j].tagName);
          for (var n = 0; n < )
        }
        return context.getElementsByTagName(cases[j].tagName);
      } else {
        context = context.getElementsByTagName(cases[j].tagName);
      }
    }
    
    if (cases[j].classes != null) {
      for (var m = 0; m < cases[j].classes.length; m++) {
        
      }
    }
  }*/
  
  console.log(cases);
};
dom.find('.parent#some-id div.child', document.body);
dom.find('.some-class.some-other-class', document.body);
dom.find('#element', document.body);
dom.find('div', document.body);
Output

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

Dismiss x
public
Bin info
fxslokerpro
0viewers