JavaScript Essential Training

LinkedIn Learning : Morten Rand-Hendriksen

Code Samples

Code Sample

This is the JavaScript code for 08_11 in the exercise files. In this case, we are not using a conditional statement, but we will use one to improve this code.

Backpack.js

This is the code for the Backpack object

	class Backpack {
	  constructor(
		name,
		volume,
		color,
		pocketNum,
		strapLengthL,
		strapLengthR,
		lidOpen,
		dateAcquired,
		image
	  ) {
		this.name = name;
		this.volume = volume;
		this.color = color;
		this.pocketNum = pocketNum;
		this.strapLength = {
		  left: strapLengthL,
		  right: strapLengthR,
		};
		this.lidOpen = lidOpen;
		this.dateAcquired = dateAcquired;
		this.image = image;
	  }
	  toggleLid(lidStatus) {
		this.lidOpen = lidStatus;
	  }
	  newStrapLength(lengthLeft, lengthRight) {
		this.strapLength.left = lengthLeft;
		this.strapLength.right = lengthRight;
	  }
	  backpackAge() {
		let now = new Date();
		let acquired = new Date(this.dateAcquired);
		let elapsed = now - acquired; // elapsed time in milliseconds
		let daysSinceAcquired = Math.floor(elapsed / (1000 * 3600 * 24));
		return daysSinceAcquired;
	  }
	}

	export default Backpack;

script.js

This code creates a backpack object, generates an HTML element to display the object and adds it to the HTML document.

	/**
	 * Create a new element and append it to the <main> element.
	 * @link https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement
	 * @link https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/append
	 */

	import Backpack from "./Backpack.js";

	const everydayPack = new Backpack(
	  "Everyday Backpack",
	  30,
	  "grey",
	  15,
	  26,
	  26,
	  false,
	  "December 5, 2018 15:00:00 PST",
	  "../assets/images/everyday.svg"
	);

	const content = `
	  <figure class="backpack__image">
		<img src=${everydayPack.image} alt="" loading="lazy" />
	  </figure>
	  <h1 class="backpack__name">${everydayPack.name}</h1>
	  <ul class="backpack__features">
		<li class="feature backpack__volume">Volume:<span> ${
		  everydayPack.volume
		}l</span></li>
		<li class="feature backpack__color">Color:<span> ${
		  everydayPack.color
		}</span></li>
		<li class="feature backpack__age">Age:<span> ${everydayPack.backpackAge()} days old</span></li>
		<li class="feature backpack__pockets">Number of pockets:<span> ${
		  everydayPack.pocketNum
		}</span></li>
		<li class="feature backpack__strap">Left strap length:<span> ${
		  everydayPack.strapLength.left
		} inches</span></li>
		<li class="feature backpack__strap">Right strap length:<span> ${
		  everydayPack.strapLength.right
		} inches</span></li>
		<li class="feature backpack__lid">Lid status:<span> ${
		  everydayPack.lidOpen
		}</span></li>
	  </ul>
	`;

	const main = document.querySelector(".maincontent");

	const newArticle = document.createElement("article");
	newArticle.classList.add("backpack");
	newArticle.setAttribute("id", "everyday");
	newArticle.innerHTML = content;

	main.append(newArticle);