当前位置:实例文章 » HTML/CSS实例» [文章]js---全选反选案例+购物车案例

js---全选反选案例+购物车案例

发布人:shili8 发布时间:2024-11-17 09:13 阅读次数:0

**JS 全选反选案例 + 购物车案例**

### 前言在前端开发中,经常会遇到需要实现全选/反选功能的场景,如购物车、多选题等。在本文中,我们将通过一个实例来演示如何使用 JavaScript 实现全选/反选和购物车案例。

### 全选/反选案例#### HTML 结构

html<!-- checkbox-group.html -->
<div class="checkbox-group">
 <input type="checkbox" id="all-check" />
 <label for="all-check">全选</label>
 <ul>
 <li>
 <input type="checkbox" id="item-1" />
 <label for="item-1">Item1</label>
 </li>
 <li>
 <input type="checkbox" id="item-2" />
 <label for="item-2">Item2</label>
 </li>
 <li>
 <input type="checkbox" id="item-3" />
 <label for="item-3">Item3</label>
 </li>
 </ul>
</div>

#### JavaScript 实现
javascript// checkbox-group.jsconst allCheck = document.getElementById('all-check');
const items = document.querySelectorAll('.checkbox-group ul li input');

// 监听全选 checkbox 的变化allCheck.addEventListener('change', function() {
 // 如果全选 checkbox 被勾选,所有 item 都应该被勾选 if (this.checked) {
 items.forEach(item => item.checked = true);
 } else {
 // 如果全选 checkbox 没有被勾选,所有 item 都应该被取消勾选 items.forEach(item => item.checked = false);
 }
});

// 监听每个 item 的变化items.forEach(item => {
 item.addEventListener('change', function() {
 // 如果任何一个 item 被勾选,全选 checkbox 应该被勾选 if (this.checked) {
 allCheck.checked = true;
 } else {
 // 如果所有 item 都没有被勾选,全选 checkbox 应该被取消勾选 const uncheckedItems = items.filter(i => !i.checked);
 if (uncheckedItems.length === items.length) {
 allCheck.checked = false;
 }
 }
 });
});

#### CSS 样式
css/* checkbox-group.css */
.checkbox-group ul {
 list-style: none;
 padding:0;
 margin:0;
}

.checkbox-group li {
 margin-bottom:10px;
}

### 购物车案例#### HTML 结构
html<!-- shopping-cart.html -->
<div class="shopping-cart">
 <h2>购物车</h2>
 <ul id="cart-items">
 <!-- 购物项将被渲染在此处 -->
 </ul>
 <p>Total: $<span id="total">0.00</span></p>
 <button id="checkout-btn">结算</button>
</div>

#### JavaScript 实现
javascript// shopping-cart.jsconst cartItems = document.getElementById('cart-items');
const totalSpan = document.getElementById('total');
const checkoutBtn = document.getElementById('checkout-btn');

let cart = [];

// 添加购物项到购物车function addCartItem(item) {
 const li = document.createElement('li');
 li.textContent = item.name + ' x' + item.quantity;
 cartItems.appendChild(li);
 cart.push(item);
}

// 移除购物项从购物车function removeCartItem(item) {
 const li = cartItems.querySelector(`[data-item-id="${item.id}"]`);
 if (li) {
 cartItems.removeChild(li);
 cart = cart.filter(i => i.id !== item.id);
 }
}

// 更新总计function updateTotal() {
 let total =0;
 cart.forEach(item => {
 total += item.price * item.quantity;
 });
 totalSpan.textContent = `$${total.toFixed(2)}`;
}

// 监听结算按钮的点击事件checkoutBtn.addEventListener('click', function() {
 // 将购物车中的项清空 cartItems.innerHTML = '';
 cart = [];
 updateTotal();
});

// 添加示例购物项addCartItem({
 id:1,
 name: '苹果',
 price:5.99,
 quantity:2});
addCartItem({
 id:2,
 name: '橙子',
 price:3.99,
 quantity:1});

// 监听购物项的变化cart.forEach(item => {
 const li = cartItems.querySelector(`[data-item-id="${item.id}"]`);
 if (li) {
 li.addEventListener('change', function() {
 // 如果数量改变,更新总计 updateTotal();
 });
 }
});

#### CSS 样式
css/* shopping-cart.css */
.shopping-cart ul {
 list-style: none;
 padding:0;
 margin:0;
}

.shopping-cart li {
 margin-bottom:10px;
}

以上就是全选/反选案例和购物车案例的实现代码。希望这些示例能够帮助你更好地理解 JavaScript 的使用场景。

其他信息

其他资源

Top