Skip to content

Commit 5c51369

Browse files
committed
assemble the html file
1 parent a3022bb commit 5c51369

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

store.js

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
if (document.readyState == 'loading') {
2+
document.addEventListener('DOMContentLoaded', ready)
3+
} else {
4+
ready()
5+
}
6+
7+
function ready() {
8+
var removeCartItemButtons = document.getElementsByClassName('btn-danger')
9+
for (var i = 0; i < removeCartItemButtons.length; i++) {
10+
var button = removeCartItemButtons[i]
11+
button.addEventListener('click', removeCartItem)
12+
}
13+
14+
var quantityInputs = document.getElementsByClassName('cart-quantity-input')
15+
for (var i = 0; i < quantityInputs.length; i++) {
16+
var input = quantityInputs[i]
17+
input.addEventListener('change', quantityChanged)
18+
}
19+
20+
var addToCartButtons = document.getElementsByClassName('shop-item-button')
21+
for (var i = 0; i < addToCartButtons.length; i++) {
22+
var button = addToCartButtons[i]
23+
button.addEventListener('click', addToCartClicked)
24+
}
25+
26+
document.getElementsByClassName('btn-purchase')[0].addEventListener('click', purchaseClicked)
27+
}
28+
29+
function purchaseClicked() {
30+
alert('Thank you for your purchase')
31+
var cartItems = document.getElementsByClassName('cart-items')[0]
32+
while (cartItems.hasChildNodes()) {
33+
cartItems.removeChild(cartItems.firstChild)
34+
}
35+
updateCartTotal()
36+
}
37+
38+
function removeCartItem(event) {
39+
var buttonClicked = event.target
40+
buttonClicked.parentElement.parentElement.remove()
41+
updateCartTotal()
42+
}
43+
44+
function quantityChanged(event) {
45+
var input = event.target
46+
if (isNaN(input.value) || input.value <= 0) {
47+
input.value = 1
48+
}
49+
updateCartTotal()
50+
}
51+
52+
function addToCartClicked(event) {
53+
var button = event.target
54+
var shopItem = button.parentElement.parentElement
55+
var title = shopItem.getElementsByClassName('shop-item-title')[0].innerText
56+
var price = shopItem.getElementsByClassName('shop-item-price')[0].innerText
57+
var imageSrc = shopItem.getElementsByClassName('shop-item-image')[0].src
58+
addItemToCart(title, price, imageSrc)
59+
updateCartTotal()
60+
}
61+
62+
function addItemToCart(title, price, imageSrc) {
63+
var cartRow = document.createElement('div')
64+
cartRow.classList.add('cart-row')
65+
var cartItems = document.getElementsByClassName('cart-items')[0]
66+
var cartItemNames = cartItems.getElementsByClassName('cart-item-title')
67+
for (var i = 0; i < cartItemNames.length; i++) {
68+
if (cartItemNames[i].innerText == title) {
69+
alert('This item is already added to the cart')
70+
return
71+
}
72+
}
73+
var cartRowContents = `
74+
<div class="cart-item cart-column">
75+
<img class="cart-item-image" src="${imageSrc}" width="100" height="100">
76+
<span class="cart-item-title">${title}</span>
77+
</div>
78+
<span class="cart-price cart-column">${price}</span>
79+
<div class="cart-quantity cart-column">
80+
<input class="cart-quantity-input" type="number" value="1">
81+
<button class="btn btn-danger" type="button">REMOVE</button>
82+
</div>`
83+
cartRow.innerHTML = cartRowContents
84+
cartItems.append(cartRow)
85+
cartRow.getElementsByClassName('btn-danger')[0].addEventListener('click', removeCartItem)
86+
cartRow.getElementsByClassName('cart-quantity-input')[0].addEventListener('change', quantityChanged)
87+
}
88+
89+
function updateCartTotal() {
90+
var cartItemContainer = document.getElementsByClassName('cart-items')[0]
91+
var cartRows = cartItemContainer.getElementsByClassName('cart-row')
92+
var total = 0
93+
for (var i = 0; i < cartRows.length; i++) {
94+
var cartRow = cartRows[i]
95+
var priceElement = cartRow.getElementsByClassName('cart-price')[0]
96+
var quantityElement = cartRow.getElementsByClassName('cart-quantity-input')[0]
97+
var price = parseFloat(priceElement.innerText.replace('$', ''))
98+
var quantity = quantityElement.value
99+
total = total + (price * quantity)
100+
}
101+
total = Math.round(total * 100) / 100
102+
document.getElementsByClassName('cart-total-price')[0].innerText = '$' + total
103+
}

0 commit comments

Comments
 (0)