Click here to Skip to main content
15,887,027 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i have this 13 products in my html code:
HTML
<div class="list">     
    <div class="item">
        
        <div class="title">Chicken Wings</div>
        <div class="price">450.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="title">Dry Fry Fish</div>
        <div class="price">650.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="title">Fries Masala</div>
        <div class="price">250.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="title">Fries</div>
        <div class="price">250.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="title">Pork Pan Fry</div>
        <div class="price">650.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="title">Kales</div>
        <div class="price">100.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="title">Kuku Kienyeji</div>
        <div class="price">450.00</div>
        Add To Cart
    </div>   
    <div class="item">
        
        <div class="title">Ugali</div>
        <div class="price">50.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="tittle">Beef Samosas</div>
        <div class="price">250.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="tittle">Soda</div>
        <div class="price">100.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="tittle">Smirnoff</div>
        <div class="price">2500.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="tittle">Novida</div>
        <div class="price">180.00</div>
        Add To Cart
    </div>
    <div class="item">
        
        <div class="tittle">Redbull</div>
        <div class="price">330.00</div>
        Add To Cart
    </div>
        </div>


What I have tried:

i have used this javascript function but it is only adding products number 1-7:
JavaScript
function addToCart(key) {
    console.log('Key value:', key);

    let item = list.querySelectorAll('.item')[key - 1];
    let name = item.querySelector('.title').textContent;
    let priceText = item.querySelector('.price').textContent;
    let price = parseFloat(priceText.replace(/[^0-9.]/g, ''));
    let image = item.querySelector('img').src; // Get the product image URL
    
    console.log(image);
    
    let container;
    if (key < 13) {
        container = listCarts; // Snacks container
    }

    console.log('Before addToCart:', listCarts);
    
    if (container[key - 1] == null) {
        // Copy product info to list card
        container[key - 1] = {
            name: name,
            basePrice: price,
            price: price,
            quantity: 1,
            image: image, // Store the product image URL
        };
    } else {
        container[key - 1].quantity++;
        container[key - 1].price = container[key - 1].basePrice * container[key - 1].quantity;
    }

    reloadCart();
}
Posted
Updated 9-Nov-23 7:34am
v2

1 solution

Your issue is related to the condition if 'key < 13' in your code, which specifies that the container should be 'listCarts' only when key is less than 13. The result is that products with keys greater than 7 won't be added to your cart, I have modified your code a little which returns all 13 products -

JavaScript
function addToCart(key) {
    console.log('Key value:', key);

    let item = list.querySelectorAll('.item')[key - 1];
    let name = item.querySelector('.title').textContent;
    let priceText = item.querySelector('.price').textContent;
    let price = parseFloat(priceText.replace(/[^0-9.]/g, ''));
    let image = item.querySelector('img').src; 

    console.log(image);

    let container = listCarts;
    console.log('Before addToCart:', listCarts);

    if (container[key - 1] == null) {        
        container[key - 1] = {
            name: name,
            basePrice: price,
            price: price,
            quantity: 1,
            image: image, 
        };
    } else {
        container[key - 1].quantity++;
        container[key - 1].price = container[key - 1].basePrice * container[key - 1].quantity;
    }

    reloadCart();
}


You can see it working in this fiddle - Show all 13 products[^]
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900