-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
executable file
·81 lines (70 loc) · 2.56 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* Event listeners
* @link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
* @link https://developer.mozilla.org/en-US/docs/Web/Events
*/
import backpackObjectArray from "./components/data.js";
/**
* Add event listener to the lid-toggle button.
*/
const lidToggle = function () {
// Find the current backpack object in backpackObjectArray
let backpackObject = backpackObjectArray.find(
({ id }) => id === this.parentElement.id
);
// Toggle lidOpen status
backpackObject.lidOpen == true
? (backpackObject.lidOpen = false)
: (backpackObject.lidOpen = true);
// Toggle button text
this.innerText == "Open lid"
? (this.innerText = "Close lid")
: (this.innerText = "Open lid");
// Set visible property status text
let status = this.parentElement.querySelector(".backpack__lid span");
status.innerText == "closed"
? (status.innerText = "open")
: (status.innerText = "closed");
};
const backpackList = backpackObjectArray.map((backpack) => {
let backpackArticle = document.createElement("article");
backpackArticle.classList.add("backpack");
backpackArticle.setAttribute("id", backpack.id);
backpackArticle.innerHTML = `
<figure class="backpack__image">
<img src=${backpack.image} alt="" loading="lazy" />
</figure>
<h1 class="backpack__name">${backpack.name}</h1>
<ul class="backpack__features">
<li class="feature backpack__volume">Volume:<span> ${
backpack.volume
}l</span></li>
<li class="feature backpack__color">Color:<span> ${
backpack.color
}</span></li>
<li class="feature backpack__age">Age:<span> ${backpack.backpackAge()} days old</span></li>
<li class="feature backpack__pockets">Number of pockets:<span> ${
backpack.pocketNum
}</span></li>
<li class="feature backpack__strap">Left strap length:<span> ${
backpack.strapLength.left
} inches</span></li>
<li class="feature backpack__strap">Right strap length:<span> ${
backpack.strapLength.right
} inches</span></li>
<li class="feature backpack__lid">Lid status: <span>${
backpack.lidOpen ? "open" : "closed"
}</span></li>
</ul>
<button class="lid-toggle">Open lid</button>
`;
let button = backpackArticle.querySelector(".lid-toggle");
// Add event listener
button.addEventListener("click", lidToggle);
return backpackArticle;
});
// Append each backpack item to the main
const main = document.querySelector(".maincontent");
backpackList.forEach((backpack) => {
main.append(backpack);
});