好的,我们来创建一个简单的购物车。首先,我们需要一个空的HTML页面。在这里,我们将包含一个商品列表和一个购物车列表。
<!DOCTYPE html> <html> <head> <title>购物车</title> </head> <body> <h1>商品列表</h1> <div id="product-list"></div> <h1>购物车</h1> <div id="cart"></div> <script> // 我们将代码添加到这里 </script> </body> </html>
接下来,我们需要一个数组来存储商品的信息。这个数组可以用一个JavaScript对象的数组来表示,每个对象都有商品的名称、价格和图片URL属性。
var products = [ { name: 'T恤', price: 19.99, image: 'https://via.placeholder.com/150' }, { name: '裤子', price: 39.99, image: 'https://via.placeholder.com/150' }, { name: '鞋子', price: 59.99, image: 'https://via.placeholder.com/150' } ];
接下来,我们需要显示商品列表。我们将使用JavaScript循环遍历商品数组,并将每个商品的名称、价格和图片添加到HTML页面中。
var productContainer = document.getElementById('product-list'); for (var i = 0; i < products.length; i++) { var product = products[i]; var html = ` <div> <img src="${product.image}"> <h3>${product.name}</h3> <p>${product.price}</p> <button onclick="addToCart(${i})">加入购物车</button> </div> `; productContainer.insertAdjacentHTML('beforeend', html); }
我们使用了模板字面量(template literals)来创建包含商品信息的HTML代码。我们也添加了一个加入购物车的按钮,当这个按钮被点击时,我们会调用一个名为addToCart的函数。这个函数将负责将商品添加到购物车中。
现在,我们需要一个数组来存储购物车中的物品。这个数组可以使用一个对象的数组来表示,每个对象都有商品的名称、价格和数量属性。
var cartItems = [];
接下来,我们需要编写addToCart函数。这个函数将从商品数组中取出商品,并将它添加到购物车数组中。
function addToCart(index) { var product = products[index]; var existingItemIndex = cartItems.findIndex(function (item) { return item.name === product.name; }); if (existingItemIndex >= 0) { cartItems[existingItemIndex].quantity++; } else { cartItems.push({ name: product.name, price: product.price, quantity: 1 }); } updateCart(); }
在这个函数中,我们首先从商品数组中取出被点击的商品。然后,我们搜索购物车数组,看看商品是否已经被添加到购物车中。如果是,我们增加购物车数组中相应物品的数量。如果不是,我们将新商品添加到购物车数组中。
现在,我们需要一个函数来更新购物车的HTML内容。
function updateCart() { var cartContainer = document.getElementById('cart'); cartContainer.innerHTML = ''; for (var i = 0; i < cartItems.length; i++) { var item = cartItems[i]; var html = ` <div> <h3>${item.name}</h3> <p>单价: ${item.price}</p> <p>数量: ${item.quantity}</p> </div> `; cartContainer.insertAdjacentHTML('beforeend', html); } }
这个函数首先清空购物车HTML中的内容,然后遍历购物车数组,并将每个购物车物品的名称、价格和数量添加到HTML中。
最后,我们需要将所有代码放在一起。
<!DOCTYPE html> <html> <head> <title>购物车</title> </head> <body> <h1>商品列表</h1> <div id="product-list"></div> <h1>购物车</h1> <div id="cart"></div> <script> var products = [ { name: 'T恤', price: 19.99, image: 'https://via.placeholder.com/150' }, { name: '裤子', price: 39.99, image: 'https://via.placeholder.com/150' }, { name: '鞋子', price: 59.99, image: 'https://via.placeholder.com/150' } ]; var cartItems = []; var productContainer = document.getElementById('product-list'); for (var i = 0; i < products.length; i++) { var product = products[i]; var html = ` <div> <img src="${product.image}"> <h3>${product.name}</h3> <p>${product.price}</p> <button onclick="addToCart(${i})">加入购物车</button> </div> `; productContainer.insertAdjacentHTML('beforeend', html); } function addToCart(index) { var product = products[index]; var existingItemIndex = cartItems.findIndex(function (item) { return item.name === product.name; }); if (existingItemIndex >= 0) { cartItems[existingItemIndex].quantity++; } else { cartItems.push({ name: product.name, price: product.price, quantity: 1 }); } updateCart(); } function updateCart() { var cartContainer = document.getElementById('cart'); cartContainer.innerHTML = ''; for (var i = 0; i < cartItems.length; i++) { var item = cartItems[i]; var html = ` <div> <h3>${item.name}</h3> <p>单价: ${item.price}</p> <p>数量: ${item.quantity}</p> </div> `; cartContainer.insertAdjacentHTML('beforeend', html); } } </script> </body> </html>
现在,我们完成了一个简单的购物车。当用户点击“加入购物车”按钮时,商品将被添加到购物车中,并且购物车中商品的数量和总价将显示在HTML页面上。