用JS实现商品添加、删除和修改

html:

<table border="1" cellspacing="0" cellpadding="20">
			<thead>
				<tr>
					<th>名称</th>
					<th>价格</th>
					<th>数量</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody id="tbody"></tbody>
			<tfoot>
				<tr>
					<th></th>
					<th id="priceAll">总价:¥0</th>
					<th id="numAll">总数:0</th>
					<th></th>
				</tr>
			</tfoot>
		</table>

		<button onclick="isShow()">添加商品</button>

		<div style="display: none;" id="tool">
			<input type="text" id="name" placeholder="请输入商品名称">
			<input type="text" id="price" placeholder="请输入商品价格">
			<input type="text" id="num" placeholder="请输入商品数量">
			<button onclick="isConfig()">确定</button>
			<button onclick="isClose()">取消</button>
		</div>

js:

<script>
			// 初始数据
			let data = [{
				name: "商品一",
				price: 33.00,
				num: 3
			}, {
				name: "商品二",
				price: 66.00,
				num: 0
			}, {
				name: "商品三",
				price: 99.00,
				num: 0
			}, ]
			
			let priceAll = 0;
			let numAll = 0;
			let index = -1;
			
			// 执行渲染
			renders()

			// 创建渲染函数
			function renders() {
				let str = "";
				for (let i = 0; i < data.length; i++) {
					str += `
					<tr>
						<td>${data[i].name}</td>
						<td>¥${data[i].price}</td>
						<td>
							<button onclick="sub(${i})" style="display:${data[i].num == 0 ? 'none' : 'inline-block'};">-</button>
							<span>${data[i].num}</span>
							<button onclick="add(${i})">+</button>
						</td>
						<td>
							<button onclick="edit(${i})">编辑</button>
							<button onclick="del(${i})">删除</button>
						</td>
					</tr>
					`;
				}
				document.getElementById("tbody").innerHTML = str;
				counts();
			}

			// 数量添加功能
			function add(i) {
				data[i].num++;
				renders();
			}
			
			// 数量减少功能
			function sub(i){
				data[i].num--;
				renders();
			}
			
			
			// 计算总价数量
			function counts(){
				priceAll = 0;
				numAll = 0;
				for (let i = 0; i < data.length; i++) {
					priceAll += parseFloat(data[i].num) * parseFloat(data[i].price);
					numAll += parseFloat(data[i].num);
				}
				document.getElementById("priceAll").innerHTML = '总价:¥' + priceAll;
				document.getElementById("numAll").innerHTML = '总数:' + numAll;
			}
			
			// 商品删除功能
			function del(i){
				// 数组.splice(从哪删,删几个,添加的值)
				data.splice(i,1);
				renders();
			}
			
			// 添加商品显示
			function isShow(){
				index = -1;
				document.getElementById("tool").style.display = "block";
			}
			
			// 确定添加/编辑
			function isConfig(){
					let name = document.getElementById("name").value;
					let price = document.getElementById("price").value;
					let num = document.getElementById("num").value;
					if( name != '' && price != "" && num !=""){
						if(index > -1){
							data.splice(index,1,{ name, price, num });
						}else{
							data.push({ name, price, num });
						}
						isClose();
						renders();
					}else{
						alert("请完善商品信息")
					}
				}
			
			
			// 取消事件
			function isClose(){
				index = -1;
				document.getElementById("name").value = "";
				document.getElementById("price").value = "";
				document.getElementById("num").value = "";
				document.getElementById("tool").style.display = "none";
			}
			
			// 编辑回显
			function edit(i){
				index = i;
				document.getElementById("tool").style.display = "block";
				document.getElementById("name").value = data[i].name;
				document.getElementById("price").value = data[i].price;
				document.getElementById("num").value = data[i].num	;
				console.log(data[i]);
			}
		</script>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值