javascript

Useful JS Snippets

By Paul Mackey on Sat Oct 05 2019

* Adding to these as I go along - Mainly for me :) 


Axios request
const axios = require('axios')
axios.get('https://api.buttercms.com/v2/posts/?auth_token=....').then((response) => {
        this.posts = response.data.data.map((post) => {
            return post.slug
        })
    })
    .catch((e) => {
        console.error(e)
    })

Get element by ID

document.getElementById('id-of-el')

Get first element of matched selector by class

document.querySelector('.el')

Get's all elements

var currentSlides = document.querySelectorAll('.FullscreenCarousel-slides .FullscreenCarousel-slide img')

Loop through slides

;[...currentSlides].forEach(slide => { // logic here })
Old fashioned loop 
for (i = 0; i < slideLengths.length; ++i) {
  slideLengths[i].innerHTML = numberOfSlides - 1
}
Get element within a fragment and set an attribute equal to an attribute of another element - uses getAttribute('attr-name') & setAttribute('attr-name')
slideFragment
.querySelector('.CarouselSlide-media img')
.setAttribute('data-flickity-lazyload', img.getAttribute('data-src'))
Get elements by tag name 
document.getElementsByTagName("script")
Import a template 
// blank slide template
var template = document.querySelector('.slideTemplate')
var slideFragment = document.importNode(template.content, true)
Ternary Operator 
let person = {
  name: 'tony',
  age: 20,
  driver: null
};
// if person >=16, person.driver = 'Yes', else person.driver = 'No'
person.driver = person.age >=16 ? 'Yes' : 'No';
Event Listeners
//hash change
window.addEventListener('hashchange', () => {
      // logic here
})


// Add click event listeners to multiple elements 
;[
  document.querySelector('[class$="-cover"] img'),
  document.querySelector('.FullscreenCarousel-cover-count'),
  document.querySelector('.show-skeleton-button')
].forEach(item => {
  item.addEventListener('click', event => {
    // logic here
})
})

// Resize event listener 
window.addEventListener('resize', fn())

// orientation change
window.addEventListener('orientationchange', fn())

// Window loaded 
window.addEventListener('load', () => { // logic here  })
Ajax Request
$.ajax({
  type: 'GET',
  url: '/submit',
  data: $("#filterForm").serialize(),
  success: function (data) {
    $('#product-grid').html(data)
  }
})

Fetch URL

window.fetch('https://services.share-pi.aarp.org/applications/CoreServices/WSOWebService/captcha/getWidget').then((resp) => resp.text()).then(data => {
// logic here
})

Creating a class & constructor

export class ClassName {
  constructor () {
    this.init()
  }
}

Extending a Class

export class StripeForm extends AuthForm { }

Getters/Setters

let campaignTracking = {
  get trackingCode () {
    return this._trackingCode
},

  set trackingCode (value) {
    this._trackingCode = value
  }
}

Object methods

Object.keys(obj) – returns an array of keys.
Object.values(obj) – returns an array of values.
Object.entries(obj) – returns an array of [key, value] pairs.