Week 7 (Beginning 25th April) Project Week 2 - emcsquared2/2022-Learning GitHub Wiki

Week 7 (Beginning April 25th) Project Week 2

JS Projects

I completed the reviews project on John Smilga's Vanilla JS Walkthrough projects on youtube https://www.youtube.com/watch?v=3PHXvlpOkf4 Here is the JS code in the app.js:

// local reviews data
const reviews = [
  {
    id: 1,
    name: "susan smith",
    job: "web developer",
    img:
      "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883334/person-1_rfzshl.jpg",
    text:
      "I'm baby meggings twee health goth +1. Bicycle rights tumeric chartreuse before they sold out chambray pop-up. Shaman humblebrag pickled coloring book salvia hoodie, cold-pressed four dollar toast everyday carry",
  },
  {
    id: 2,
    name: "anna johnson",
    job: "web designer",
    img:
      "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883409/person-2_np9x5l.jpg",
    text:
      "Helvetica artisan kinfolk thundercats lumbersexual blue bottle. Disrupt glossier gastropub deep v vice franzen hell of brooklyn twee enamel pin fashion axe.photo booth jean shorts artisan narwhal.",
  },
  {
    id: 3,
    name: "peter jones",
    job: "intern",
    img:
      "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883417/person-3_ipa0mj.jpg",
    text:
      "Sriracha literally flexitarian irony, vape marfa unicorn. Glossier tattooed 8-bit, fixie waistcoat offal activated charcoal slow-carb marfa hell of pabst raclette post-ironic jianbing swag.",
  },
  {
    id: 4,
    name: "bill anderson",
    job: "the boss",
    img:
      "https://res.cloudinary.com/diqqf3eq2/image/upload/v1586883423/person-4_t9nxjt.jpg",
    text:
      "Edison bulb put a bird on it humblebrag, marfa pok pok heirloom fashion axe cray stumptown venmo actually seitan. VHS farm-to-table schlitz, edison bulb pop-up 3 wolf moon tote bag street art shabby chic. ",
  },
];

// select items

const img = document.getElementById("person-img");
const author = document.getElementById("author");
const job = document.getElementById("job");
const info = document.getElementById("info");

const prevBtn = document.querySelector(".prev-btn");
const nextBtn = document.querySelector(".next-btn");
const randomBtn = document.querySelector(".random-btn");

//set starting item 
let currentItem = 0;

// load initial item
window.addEventListener("DOMContentLoaded", function (){
  showPerson(currentItem)
});


// show person based on item

function showPerson(person) {
  const item = reviews[person];
  img.src = item.img;
  author.textContent = item.name;
  job.textContent = item.job;
  info.textContent = item.text;
}

// show next person

nextBtn.addEventListener("click", function (){
  currentItem++;
  if (currentItem > reviews.length - 1){
    currentItem = 0;
  }
  showPerson(currentItem)
});

// show prev person
prevBtn.addEventListener("click", function (){
  currentItem--;
  if (currentItem < 0){
    currentItem = reviews.length -1;
  }
  showPerson(currentItem)
});


// random number generator
function randNum() {
  return Math.floor(Math.random()*(reviews.length))
;}

// show random person
randomBtn.addEventListener("click", function(){
 currentItem = randNum();
 showPerson(currentItem)
});

Takeaway Learning

  • After having quite a break from coding this was good to get things booted up again.
  • It felt pretty straight forward in terms of the js side. Using window.addEventListener("DOMContentLoaded", function (){ showPerson(currentItem) was new. MDN Docs... "The DOMContentLoaded event fires when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading."