Advertisement
svetlai

DOM Operations Events

Aug 1st, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* globals $ */
  2.  
  3. /*
  4.  
  5.  Create a function that takes an id or DOM element and:
  6.  
  7.  
  8.  */
  9.  
  10. function solve() {
  11.     return function (selector) {
  12.         //var domElement = document.querySelector(selector);
  13.         var domElement = document.getElementById(selector);
  14.  
  15.         if (typeof (selector) !== 'string' && !(selector instanceof HTMLElement)) {
  16.             throw new Error('Selector must be string or DOM element');
  17.         }
  18.  
  19.         if (domElement === null) {
  20.             throw new Error('The provided DOM element is non-existent');
  21.         }
  22.  
  23.         //var allButtons = document.getElementsByClassName('button');
  24.         var allButtons = domElement.getElementsByClassName('button');
  25.  
  26.         for (var i = 0, len = allButtons.length; i < len; i += 1) {
  27.             allButtons[i].innerHTML = 'hide';
  28.         }
  29.  
  30.         domElement.addEventListener('click', function (ev) {
  31.             var clickedButton = ev.target;
  32.             if (clickedButton.classList.contains('button')) {
  33.                 var content = clickedButton.nextElementSibling;
  34.  
  35.                 while (content && !content.classList.contains('button')) {
  36.                     if (content.classList.contains('content')) {
  37.                        // console.log(content);
  38.                         if (content.style.display === '') {
  39.                             clickedButton.innerHTML = 'show';
  40.                             content.style.display = 'none'
  41.                         } else if (content.style.display === 'none') {
  42.                             clickedButton.innerHTML = 'hide';
  43.                             content.style.display = '';
  44.                         }
  45.                        
  46.                         break;
  47.                     }
  48.  
  49.                     content = content.nextElementSibling;
  50.                 }
  51.             }
  52.         });
  53.     };
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement