如何用JS写个简单的购物车,方法是什么
Admin 2022-08-10 群英技术资讯 829 次浏览
在这篇文章中,我们来学习一下“如何用JS写个简单的购物车,方法是什么”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。本文实例为大家分享了JavaScript实现购物车效果的具体代码,供大家参考,具体内容如下
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
table {
border: 1px solid #e9e9e9;
border-collapse: collapse;
border-spacing: 0;
}
td {
padding: 8px 16px;
border: 1px solid #e9e9e9;
text-align: left;
}
td img {
width: 50px;
height: 50px;
}
th {
background-color: #f7f7f7;
color: #5c6b77;
font-weight: 600;
}
</style>
</head>
<body>
图书类型:<select id="xlxx" onchange="tslx()">
<option value="全部">全部</option>
<option value="科幻">科幻</option>
<option value="小说">小说</option>
<option value="文学">文学</option>
<option value="悬疑">悬疑</option>
</select>
<table border="0">
<tr>
<th><button type="button" style="border: 0;background-color: #f7f7f7;" id="qbxz"
onclick="quanxuan ()">全选</button></th>
<th>序号</th>
<th>商品名</th>
<th>书籍名</th>
<th>分类</th>
<th>价格</th>
<th>购买数量</th>
<th>操作</th>
</tr>
<tr name="wx">
<td><input type="checkbox" name="cb" onchange="zhjs()" id="" value="" class="qx" /></td>
<td>1</td>
<td><img onmouseover="tpmax(this.src)" onmouseout="tpmin()" src="../img/20180520083915_sMx82.jpeg"></td>
<td>活着</td>
<td>文学</td>
<td><label name="jg">25</label></td>
<td>
<button onclick="jia('num1')">+</button>
<label id="num1" name="num">1</label>
<button onclick="jian('num1')">-</button>
</td>
<td><button onclick="deletet(1)">移除</button></td>
</tr>
<tr name="kh">
<td><input type="checkbox" name="cb" onchange="zhjs()" id="" value="" class="qx" /></td>
<td>2</td>
<td><img onmouseover="tpmax(this.src)" onmouseout="tpmin()" src="../img/20180520083916_8ntMr.jpeg"></td>
<td>活着2</td>
<td>科幻</td>
<td><label name="jg">30</label></td>
<td>
<button onclick="jia('num2')">+</button>
<label id="num2" name="num">1</label>
<button onclick="jian('num2')">-</button>
</td>
<td><button onclick="deletet(2)">移除</button></td>
</tr>
<tr name="xs">
<td><input type="checkbox" name="cb" onchange="zhjs()" id="" value="" class="qx" /></td>
<td>3</td>
<td><img onmouseover="tpmax(this.src)" onmouseout="tpmin()" src="../img/20191227173047_zrXxQ.jpeg"></td>
<td>活着3</td>
<td>小说</td>
<td><label name="jg">35</label></td>
<td>
<button onclick="jia('num3')">+</button>
<label id="num3" name="num">1</label>
<button onclick="jian('num3')">-</button>
</td>
<td><button onclick="deletet(3)">移除</button></td>
</tr>
<tr name="xy">
<td><input type="checkbox" name="cb" onchange="zhjs()" id="" value="" class="qx" /></td>
<td>4</td>
<td><img onmouseover="tpmax(this.src)" onmouseout="tpmin()" src="../img/20191227173048_eGeBA.jpeg"></td>
<td>活着4</td>
<td>悬疑</td>
<td><label name="jg">40</label></td>
<td>
<button onclick="jia('num4')">+</button>
<label id="num4" name="num">1</label>
<button onclick="jian('num4')">-</button>
</td>
<td><button onclick="deletet(4)">移除</button></td>
</tr>
</table>
<h1 id="nr" style="display: none;">购物车为空!</h1>
总金额:<label id="zh" style="color: red;">0</label>¥
<img src="" style="width: 150px;" id="img">
</body>
<script type="text/javascript">
</script>
<script src="../js/gwc.js" type="text/javascript" charset="utf-8"></script>
</html>
JavaScript:
/*
1.图片悬浮时的放大
2.全选
3.分类
4.数值的加减
5.总和的实现
6.删除功能
*/
// 1.图片悬浮时的放大
// 图片移入放大
function tpmax(lj) {
//移入 将获取到的图片路径加载到下方显示图片路径实现移入显示
document.getElementById("img").src = lj
}
// 图片移出隐藏
function tpmin() {
//移出 将空的图片路径加载到下方显示图片路径实现移出不显示
document.getElementById("img").src = "";
}
// 2.全选
function quanxuan() {
var qxaj = document.getElementsByClassName("qx");
// 遍历判断复选框的状态
for (var i = 0; i < qxaj.length; i++) {
if (qxaj[i].checked == true) {
for (var i = 0; i < qxaj.length; i++) {
qxaj[i].checked = false;
}
} else {
for (var i = 0; i < qxaj.length; i++) {
qxaj[i].checked = true;
}
}
}
zhjs();
}
// 3.分类
/*
1.只显示分类的:将不属于的分类隐藏,直显示匹配的行
2.显示与隐藏两个方法
*/
function tslx() {
var xlxx = document.getElementById("xlxx").value;
var kh = document.getElementsByName("kh");
var xs = document.getElementsByName("xs");
var wx = document.getElementsByName("wx");
var xy = document.getElementsByName("xy");
if (xlxx == "全部") {
xianshi(kh);
xianshi(xs);
xianshi(wx);
xianshi(xy);
}
if (xlxx == "科幻") {
xianshi(kh);
yincang(xs);
yincang(wx);
yincang(xy);
}
if (xlxx == "文学") {
yincang(kh);
yincang(xs);
xianshi(wx);
yincang(xy);
}
if (xlxx == "小说") {
yincang(kh);
xianshi(xs);
yincang(wx);
yincang(xy);
}
if (xlxx == "悬疑") {
yincang(kh);
yincang(xs);
yincang(wx);
xianshi(xy);
}
}
// 显示
function xianshi(xlxx) {
// 遍历寻找匹配的值
for (var i = 0; i < xlxx.length; i++) {
xlxx[i].style.visibility = "visible";
}
}
// 隐藏
function yincang(xlxx) {
for (var i = 0; i < xlxx.length; i++) {
xlxx[i].style.visibility = "collapse";
}
}
// 4.数值的加减
function jian(numid) {
var num = document.getElementById(numid).innerHTML;
var ljnum = parseInt(num) - 1;
if (ljnum > 0) {
document.getElementById(numid).innerHTML = ljnum;
}
zhjs();
}
function jia(numid) {
// 得到原始值
var num = document.getElementById(numid).innerHTML;
// 得到累加值
var ljnum = parseInt(num) + 1;
// 赋值
document.getElementById(numid).innerHTML = ljnum;
zhjs();
}
//5.总和计算
function zhjs() {
var jg = document.getElementsByName("jg");
var sl = document.getElementsByName("num");
var cb = document.getElementsByName("cb");
var sum = 0;
for (var i = 0; i < cb.length; i++) {
if (cb[i].checked == true) {
sum += parseInt(jg[i].innerHTML) * parseInt(sl[i].innerHTML);
}
}
document.getElementById("zh").innerHTML = sum;
}
// 6.删除
// 遍历全部tr
var s = 0;
var qbtr = document.getElementsByTagName("tr");
for (var i = 0; i < qbtr.length; i++) {
s++;
}
function deletet(index) {
// tr()
var c = document.getElementsByName("cb");
c[index - 1].checked = false;
var h = document.getElementsByTagName("tr");
h[index].style.display = "none";
s--;
if (s == 1) {
document.getElementById("nr").style.display = "block";
document.getElementById("cartb").style.display = "none";
document.getElementById("stype").style.display = "none";
}
zhjs();
}
效果:
全选:

分类:


删除:

添加数量

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章我们来了解JavaScript全局函数的相关内容,JavaScript中全局函数有很多,例如isNaN()用于检查某个值是否是数字、Number()用于把对象的值转换为数字等等,接下来我们就来认识一下这些全局函数,以及应该怎样使用,下文有很详细的介绍,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
这篇文章给大家分享的是JS中splice方法的相关内容,splice()方法可以用于删除指定数量的元素,文中详细的介绍了 splice()方法的使用,有需要的朋友可以了解看看,接下来就跟随小编一起学习一下吧。
本文给大家分享React引入antd-mobile+postcss搭建移动端的详细流程,文末给大家分享我的一些经验记录使用antd-mobile时发现我之前配置的postcss失效了,防止大家踩坑,特此把解决方案分享到脚本之家平台,需要的朋友参考下吧
这篇文章给大家分享的是怎样使用vue做一个价格日历效果的代码。在日历上能一目了然的看到每人的费用价格记录是多少,小编觉得挺有趣的,因此分享给大家做个参考,感兴趣的朋友就接着看吧。
最常见的多环境配置,就是开发环境配置,和生产环境配置,本文主要介绍了vue项目多环境配置的实现,感兴趣的可以了解一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008