简易购物车(HTML/CSS/JS)
实现功能
1.能够新增减少商品数量
2.能够新增商品种类
3.能够计算商品总价,总价随着商品数量变化而变化
整体思路
1.先写一个初始商品,包含名称,单价,描述,然后将其隐藏
2.克隆初始商品,重置其名称,单价,描述
3.点击新增,将克隆的商品添加进去
补充
1.一定要为初始商品添加事件监听器,否则初始商品无法+-del
2.每一步操作都要更新总价
完整代码
shopcar.html
购物车鲜花
单价10元
简介:平平无奇的一朵鲜花
+ 0 - del 名称: 单价: 描述:
总价:0
shopcar.js
// 在页面加载完成后隐藏初始商品
document.addEventListener('DOMContentLoaded', function () {
var initialProduct = document.querySelector(".unit");
initialProduct.style.display = 'none';
});
// 增加商品函数
function addProductEventListener(newUnit) {
var geshu = 0;
var addButton = newUnit.querySelector(".add");
var subButton = newUnit.querySelector(".sub");
var deleButton = newUnit.querySelector(".delete");
var geshuDisplay = newUnit.querySelector(".geshu");
var unitPrice = parseFloat(newUnit.querySelector(".jiage").textContent);
//------➕增加按钮
addButton.addEventListener('click', function () {
geshu++;
// 更新个数展示区域的数字
geshuDisplay.textContent = geshu;
// 更新总价
sum.textContent = zongjia();
});
//------➖减少按钮
subButton.addEventListener('click', function () {
if (geshu > 0) {
geshu--;
geshuDisplay.textContent = geshu;
sum.textContent = zongjia();
}
else {
alert("已经是0,不能再减少了!");
}
});
//------del删除按钮
deleButton.addEventListener('click', function () {
newUnit.remove();
// 更新总价
sum.textContent = zongjia();
});
//------总价
sum.textContent = zongjia();
function zongjia() {
var zj = 0;
// 遍历所有的商品
var unitDisplay = document.querySelectorAll(".unit");
unitDisplay.forEach(function (unit) {
var jiage = parseFloat(unit.querySelector(".jiage").textContent);
var geshu = parseInt(unit.querySelector(".geshu").textContent);
// 计算总价=个数*价格
zj += geshu * jiage;
});
return zj;
}
}
// 调用增加商品函数
// 一定要为初始商品添加事件监听器,否则初始商品无法+-del
addProductEventListener(document.querySelector(".unit"));
//------新增商品种类
// 提交按钮
var tijiaoButton = document.querySelector("#tijiao")
tijiaoButton.addEventListener('click', function () {
var name = document.querySelector("#name").value;
var price = document.querySelector("#price").value;
var description = document.querySelector("#description").value;
// var imageUpload = document.querySelector("#imageUpload").files[0]; // 获取上传的图片文件
// 克隆之前存在的那个商品
var unitclone = document.querySelector(".unit").cloneNode(true);
// 显示克隆的商品
unitclone.style.display = 'inline-block';
unitclone.querySelector("p").textContent = name;
unitclone.querySelector(".jiage").textContent = price;
unitclone.querySelector(".geshu").textContent = 0;//一定要个数归0,否则会克隆初始商品的个数
unitclone.querySelector("p:nth-of-type(3)").textContent = "描述" + description;
// 将新克隆的商品元素添加到页面中
document.querySelector("#list").appendChild(unitclone);
// 为新增商品添加事件监听器
addProductEventListener(unitclone);
// 更新总价
sum.textContent = zongjia();
});
shopcar.css
* {
margin: 0px;
padding: 0px;
text-align: center;
}
/* 整个大框框 */
#frame {
width: 700px;
height: 500px;
border: 2px solid black;
/* 居中 */
top: 50%;
left: 50%;
position: absolute;
transform: translate(-50%, -50%);
}
/* 底部的商品列表 */
#list {
width: 100%;
height: 430px;
border-bottom: 1px solid black;
overflow-y: scroll;
}
/* 单个商品样式 */
.unit {
width: 90%;
height: 90px;
margin: 10px auto;
border: 1px solid black;
}
/* 放置商品图片 */
.unit>img {
width: 20%;
height: 100%;
float: left;
}
/* 放置商品信息和按钮 */
.unit>div {
width: 40%;
height: 100%;
float: left;
}
/* 选择所有带有class为unit的元素
的最后一个直接子div内的所有直接子div
就是➕➖ */
.unit>div:last-child>div {
width: 25%;
height: 100%;
float: left;
/* 设置行高居中 */
font-size: 30px;
color: #ff8f8f;
line-height: 270%;
}
/* 悬停变色,让这个元素看上去更像按钮 */
.unit>div:last-child>div:hover {
font-size: 30px;
color: #ff0000;
}
/* 设置面板 */
#set {
width: 100%;
height: 100px;
}
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

