• Home
  • Health
  • Software
  • Blog
  • javascript

    Plain JS Notes

    Setting a click on the document, to capture clicks on all elements:

    document.addEventListener("click", myFunction);
    
    function myFunction(e) {
      console.log('arg:', e);
      console.log('arg:', e.attributes);
      console.log('arg:', e.classList);
      console.log('arg:', e.dataset);
      console.log('arg:', e.target); // Just prints the html, even though e.target has stuff in it
      console.log('arg:', e.target.nodeName); // A, H1, P, etc
    }
    


    A click tracker that bubbles up to find an item with a certain attribute:

          document.addEventListener('DOMContentLoaded', function() {
            let checkForTrackingClick = function (event, bubbleUpNode) {
              let node = bubbleUpNode ? bubbleUpNode : event.target;
              let parent = node.parentNode;
    
              if (!parent)
                return;
    
              // Only handle Clicks on A-tags with a data attribute set:
              if (node.nodeName != 'A' || !node.dataset['aCertainDataAttribute'])
                return checkForTrackingClick(event, parent);
    
              let id   = node.dataset['aCertainDataAttribute'];
              let type = node.dataset['aCertainDataAttribute2'];
    
              someTrackingFunction(id, type);
            }
    
            document.addEventListener("click", checkForTrackingClick);
          });