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