Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Create a module for working to work with DOM. The module should have the following functionality
- Add element to parent element by given selector
- Remove element from the DOM by given selector
- Attach event to given selector by given event type and event hander
- Add elements to buffer, which appends them to the DOM when their for some selector count becomes 100
- The buffer contains elements for each selector it gets
- Get elements by CSS selector
- The module should reveal only the methods */
- 'use strict';
- var domModul = (function () {
- // Fields
- var _parentNode;
- var _currentNode;
- var _childNode;
- var _childNodeSet;
- var _buffer = [];
- // Private functions
- function getElement(selector) {
- return document.querySelector(selector);
- }
- function getElementsAll(selector) {
- return document.querySelectorAll(selector);
- }
- // Public functions
- return {
- appendChild: function (element, selector) {
- _parentNode = getElement(selector);
- _parentNode.appendChild(element);
- },
- removeChild: function (parentSelector,childSelector) {
- _parentNode = getElement(parentSelector);
- _childNode = _parentNode.querySelector(parentSelector + ">" + childSelector);
- _parentNode.removeChild(_childNode);
- },
- removeAllChild: function (parentSelector, childSelector) {
- _parentNode = getElement(parentSelector);
- _childNodeSet = document.querySelectorAll(parentSelector + ">" + childSelector);
- for (var i = 0; i < _childNodeSet.length; i++) {
- if (_childNodeSet[i].nodeType === 1) {
- _childNodeSet[i].parentNode.removeChild(_childNodeSet[i]);
- }
- }
- },
- attachEvent: function (elementSelector, eventType, eventHandler) {
- _currentNode = getElement(elementSelector);
- _currentNode.addEventListener(eventType, eventHandler);
- },
- addToBuffer: function (parentSelector, element) {
- if (_buffer[parentSelector] === undefined) {
- _buffer[parentSelector] = document.createDocumentFragment();
- _buffer[parentSelector].appendChild(element);
- } else {
- _buffer[parentSelector].appendChild(element);
- if (_buffer[parentSelector].childNodes.length >= 100) {
- _parentNode = getElement(parentSelector);
- _parentNode.appendChild(_buffer[parentSelector]);
- }
- }
- },
- cssSelector: function (selector) {
- return getElement(selector);
- },
- cssSelectorAll: function (selector) {
- return getElementsAll(selector);
- }
- };
- }());
Advertisement
Add Comment
Please, Sign In to add comment