Getting items into cart with info from data-attributes

Getting items into cart with info from data-attributes

Hello

I'm doing an online shop for the first time so i'm still getting into grasps with this.

The first task, which is retrieving the items info and putting them in the cart doesn't work, therefore i cannot check if the other tasks are also working (like price calculation, increase/decrease price and remove cart display when item is there or is not)

The articles info is inside a custom data-attribute so i'm trying to retrieve it. I've made a fiddle that you can check below:


Here is my HTML code:

  1. <main>
  2.       <section id="is-shopContainer">
  3.     <article id="section-shop">
  4.       <h2>Online Shop</h2>
  5.       <p>Articles available.</p>      
  6.       <ol>
  7.         <li>
  8.           <div>
  9.             <h3>FlipFlops</h3>
  10.             <p>Beach shoes.</p>
  11.           </div>
  12.           <footer>
  13.             <p>&euro;5</p>
  14.             <button data-shop-listing='{"name": "FlipFlops", "description": "FlipFlops", "price": 5.00}'>Add to cart</button>
  15.           </footer>
  16.         </li>
  17.         <li>
  18.           <div>
  19.             <h3>Raquet</h3>
  20.             <p>Play it</p>
  21.           </div>
  22.           <footer>
  23.             <p>&euro;12.99</p>
  24.             <button data-shop-listing='{"name": "Raquet", "description": "Play the Raquet", "price": 12.99}'>Add to cart</button>
  25.           </footer>
  26.         </li>
  27.         <li>
  28.           <div>
  29.             <h3>Balls</h3>
  30.             <p>Raquet balls.</p>
  31.           </div>
  32.           <footer>
  33.             <p>&euro;9.99</p>
  34.             <button data-shop-listing='{"name": "Balls", "description": "Balls.", "price": 9.99}'>Add to cart</button>
  35.           </footer>
  36.         </li>
  37.         <li>
  38.           <div>
  39.             <h3>Buoy</h3>
  40.             <p>A buoy</p>
  41.           </div>
  42.           <footer>
  43.             <p>&euro;2.50</p>
  44.             <button data-shop-listing='{"name": "Buoy", "description": "A buoy", "price": 5.50}'>Add to cart</button>
  45.           </footer>
  46.         </li>
  47.       </ol>
  48.     </article>
  49.       </section>
  50.     <article id="section-shoppingcart">
  51.       <h2>Your shopping cart</h2>
  52.       <p>&hellip;is empty.</p>
  53.       <form id="shoppingcart-form">
  54.         <table>
  55.           <thead>
  56.             <tr>
  57.               <th>Product</th>
  58.               <th>Price</th>
  59.               <th>Quantity</th>
  60.             </tr>
  61.           </thead>
  62.           <tbody>
  63.             <tr>
  64.               <td>
  65.                 <h3></h3>
  66.                 <p></p>
  67.                 <div>
  68.                   <button>Remove</button>
  69.                 </div>
  70.               </td>
  71.               <td>
  72.                 <output></output>
  73.               </td>
  74.               <td>
  75.                 <input type="number" min="1" value="1">
  76.                 <span>
  77.                 <button type="button" aria-label="decrease">
  78.                 -
  79.                 </button>
  80.                 <button type="button" aria-label="step up">
  81.                 +
  82.                 </button>
  83.                 </span>
  84.               </td>
  85.             </tr>
  86.           </tbody>
  87.           <tfoot>
  88.             <tr>
  89.               <td colspan="3">
  90.                 <ol>
  91.                   <li>
  92.                     <label>Price before <abbr title="Value Added Tax">VAT</abbr>:</label>
  93.                     <output></output>
  94.                   </li>
  95.                   <li>
  96.                     <label><abbr title="Value Added Tax">VAT</abbr> @ <strong>20</strong>%:</label>
  97.                     <output></output>
  98.                   </li>
  99.                   <li>
  100.                     <label>Total to be paid:</label>
  101.                     <output></output>
  102.                   </li>
  103.                 </ol>
  104.               </td>
  105.             </tr>
  106.           </tfoot>
  107.         </table>
  108.         <footer>
  109.           <p>            
  110.           </p>
  111.           <a href="#"></a> <button type="submit" form="shoppingcart-form">Proceed to Checkout</button>
  112.         </footer>
  113.       </form>
  114.     </article>
  115.   </main>
And my jQuery

  1. $(document).ready(function(){
  2.   
  3. //add items to cart
  4.     var itemData = $('#section-shop button').each(function(){
  5.         $(this).on('click', function(){                   
  6.         $(this).data('shop-listing', function(product, description, price){
  7.             product.appendTo('#shoppingcart-form tbody tr td h3');
  8.             description.appendTo('#shoppingcart-form tbody tr td p');
  9.             price.appendTo('#shoppingcart-form output');
  10.             
  11.             //get input label to increase/decrease number
  12.             var inp = $('#shoppingcart-form tbody tr td:last-child input').val();
  13.             
  14.             //increase/decrease price
  15.             var totalPrice = price;
  16.             totalPrice.appendTo('#shoppingcart-form tfoot ol li:first-child output');
  17.             
  18.             if($('#shoppingcart-form tbody button:first-child').click(function(){
  19.                 price++;
  20.                 totalPrice++;
  21.                 inp++;
  22.             }));            
  23.             
  24.             if($('#shoppingcart-form tbody button:last-child').click(function(){
  25.                 price--;
  26.                 totalPrice--;
  27.                 inp--;
  28.             }));
  29.             
  30.             //add VAT
  31.             var VAT = totalPrice * 20/100;
  32.             VAT.appendTo('#shoppingcart-form tfoot ol li:nth-child(2) output');
  33.             
  34.             //Total Price with VAT
  35.             var total = VAT;
  36.             
  37.             //print total price
  38.             total.appendTo('#shoppingcart-form tfoot ol li:last-child output');
  39.           });
  40.         });
  41.     });
  42.     
  43. //show/hide shopping cart when first item is choosen or is empty
  44. var shoppingCart = $('#section-shoppingcart');
  45.     
  46.    if(shoppingCart.length > 0) {
  47.        $(this).css('opacity', 1);
  48.    } else {
  49.        $(this).css('opacity', 0);
  50.    }
  51.    
  52.     //remove items from the cart
  53.     $('#shoppingcart-form tbody tr td:first-child div button').on('click', function() {
  54.        $(this).remove(itemData); 
  55.     });
  56.     console.log(itemData);
  57.     
  58.     //Checkout button inactive
  59.     $('#shoppingcart-form footer button').on('click', function(e){
  60.         e.preventDefault();
  61.         $(this).attr('disabled', 'disabled').prop('disabled', true).css('opacity', '0.5');
  62.        $(this).text('Processing');        
  63.     });
  64. });

How can i retrieve the items to the shopping cart?

Any help is appreciated.