JavaScript网页购物车

article/2025/10/10 1:19:19

 今天给大家讲解一个网页购物车的案例,案例比较简陋,包含登录注册购物车界面。

在做项目之前,你要在自己项目中建一个img包,用来存储你项目中所需用到的图片,如下图所示

一、登录注册介绍

界面代码展示 

<style>html,body{height: 100%;margin: 0px;}body{background: url(img/1.jpeg) center/cover;}form{background: rgba(255,255,255,.3);/* position: absolute; *//* 间距 */padding: 20px 40px;/* left: 50%;top: 35%; */border-radius: 10px;box-shadow: 6px 6px 10px black;}#login{position: absolute;left: 50%;top: 35%;}#register{position: absolute;right: 50%;top: 30%;}input{border: 1px solid gainsboro;border-radius: 20px;height: 40px;width: 300px;font-size: large;margin: 10px 0px;}button{width: 100px;height: 50px;border: 1px solid gainsboro;border-radius: 30px;margin: 10px 30px;}
</style><!-- 登录界面 ------------------------------------------------------------------>
<div id="login"><form action="" id="myLogin"><h1>欢迎来到登录界面</h1><p><font size="5" color="black">账号:</font><input type="text" id="userName1" placeholder="请输入账号" onfocus="value=''"/></p><p><font size="5" color="black">密码:</font><input type="text" id="userPwd1" placeholder="请输入密码" onfocus="value=''"/></p><p style="text-align: center;"><button type="button" onclick="fun01(1)">登录</button><button type="button" onclick="fun01(2)">注册</button></p></form>
</div><!-- 注册界面 ------------------------------------------------------------------>
<div id="register" style="display: none;"><form action="" id="myRegister"><h1>欢迎来到注册界面</h1><p><font size="5" color="black">账号:</font><input type="text" id="userName" onfocus="value=''"/></p><p><font size="5" color="black">密码:</font><input type="text" id="userPwd" onfocus="value=''"/></p><p style="text-align: center;"><button onclick="fun01(3)">注册</button><button type="button" onclick="fun01(4)">返回</button></p></form>
</div>

登录跟注册是在同一个界面中,注册界面先是设置了隐藏,当点击注册时,隐藏登录的div,显示注册的div,注册成功后会跳转到登录界面

js代码展示 

<script>function fun01(n){var login=document.getElementById("login")var register=document.getElementById("register")if(n==1){ //登录var f1 = checkLabel(userName1,/^\d{6,10}$/,'账号是6-10的纯数字')var f2 = checkLabel(userPwd1,/^\w{8,12}$/,'密码的长度是8-12')if(f1&&f2===true){alert("登录成功")location.href="main.html"}}else if(n==2){ //注册login.style.display="none"register.style.display="block"}else if(n==3){ //注册界面的注册按钮myRegister.onsubmit=()=>{var f1 = checkLabel(userName,/^\d{6,10}$/,'账号是6-10的纯数字')var f2 = checkLabel(userPwd,/^\w{8,12}$/,'密码的长度是8-12')if(f1&&f2===true){alert("注册成功")}return f1&&f2}}else{ //返回按钮login.style.display="block"register.style.display="none"}}function checkLabel(obj,rex,tip) {var length=obj.value.lengthif (length > 0) {//里面有内容//内容在正则匹配之间if (rex.test(obj.value)) {return true}//不在区间之内obj.value=tipreturn false}//里面没有内容obj.value = "请输入"return false}</script>

账号跟密码做了正则判断,账号是6~10的纯数字,密码的长度是8~12,可包含数字,字母,特殊字符。

注意:我这里并没有写账号与密码是否一致的判断,登录只要满足上面的正则判断即可登录成功,想要这些功能的可自行添加

界面展示 

 当登录成功后,会跳转我们的购物车界面。


二、购物车界面以及部分功能介绍

 界面代码展示

<style>img{width:300px;height:300px;}button{border-radius: 20px;}.h3{text-align: center;}tr{margin: 20px 20px;}table{border-top: 1px solid #333;border-left: 1px solid #333;width:100%;height:50px;}td{border-right: 1px solid #333;border-bottom: 1px solid #333;text-align: center;}div{display: inline-block;margin: 0px 85px 0px 0px;}
</style><h2 class="h3">购物车</h2><br ><table id="table"><tr><td>全选中<input type="checkbox" onclick="selectAll(this.checked)"></td><td>商品图片</td><td>商品的单价</td><td>选择的个数</td><td>该商品的总价</td><td>该商品的操作</td></tr><tr><td><input type="checkbox"></td><td><img src="img/4.jpg" ></td><td contenteditable="true" class="price" onblur="calcRow('',this.parentElement)">109.9</td><td contenteditable="true" class="count" onblur="calcRow('',this.parentElement)">1</td><td class="sum">109.9</td><td><button onclick="calcRow('+',this.parentElement.parentElement)">+</button><button onclick="calcRow('-',this.parentElement.parentElement)">-</button><button class="dele">删除</button></td></tr><tr><td><input type="checkbox"></td><td><img src="img/5.jpg" ></td><td contenteditable="true" class="price" onblur="calcRow('',this.parentElement)">78.6</td><td contenteditable="true" class="count" onblur="calcRow('',this.parentElement)">1</td><td class="sum">78.6</td><td><button onclick="calcRow('+',this.parentElement.parentElement)">+</button><button onclick="calcRow('-',this.parentElement.parentElement)">-</button><button class="dele">删除</button></td></tr><tr><td><input type="checkbox"></td><td><img src="img/8.jpg" ></td><td contenteditable="true" class="price" onblur="calcRow('',this.parentElement)">119.9</td><td contenteditable="true" class="count" onblur="calcRow('',this.parentElement)">1</td><td class="sum">119.9</td><td><button onclick="calcRow('+',this.parentElement.parentElement)">+</button><button onclick="calcRow('-',this.parentElement.parentElement)">-</button><button class="dele">删除</button></td></tr><tr><td><input type="checkbox"></td><td><img src="img/10.jpg" ></td><td contenteditable="true" class="price" onblur="calcRow('',this.parentElement)">65.9</td><td contenteditable="true" class="count" onblur="calcRow('',this.parentElement)">1</td><td class="sum">65.9</td><td><button onclick="calcRow('+',this.parentElement.parentElement)">+</button><button onclick="calcRow('-',this.parentElement.parentElement)">-</button><button class="dele">删除</button></td></tr></table><br><button onclick="delCKRow()">删除所选的商品</button><h1>总价: $<font color="green" id="allPrice">0.0</font></h1><hr ><h3 class="h3">猜你喜欢</h3><div id=""><img class="a" src="img/6.jpg" ><p>黑色连衣裙</p><p>¥<span class="b">95.5</span></p><button onclick="addRow(this.parentElement)">加入购物车</button></div><div id=""><img class="a" src="img/7.jpg" ><p>小众战袍穿搭红色连衣裙</p><p>¥<span class="b">139.9</span></p><button onclick="addRow(this.parentElement)">加入购物车</button></div><div id=""><img class="a" src="img/9.jpg" ><p>茶羽中 水手服学院风套装</p><p>¥<span class="b">129.9</span></p><button onclick="addRow(this.parentElement)">加入购物车</button></div><div id=""><p><img class="a" src="img/11.jpg" ></p><p>短袖T恤裙</p><p>¥<span class="b">69.9</span></p><button onclick="addRow(this.parentElement)">加入购物车</button></div>

js代码展示 

<script>//计算当前所有商品的总价function calcAll() {//获得页面中所有的行var rs=document.getElementsByTagName("tr")var sum=0;for(let i=1;i<rs.length;i++){//rs[i]就是除了第一行之外的其他的行var s1=rs[i].getElementsByClassName("sum")[0].textContentsum+=parseFloat(s1)}//给页面赋值,只要小书店后两位allPrice.textContent=sum.toFixed(2)}//删除选中的行function delCKRow() {//获得页面中所有的行var rs=document.getElementsByTagName("tr")//将集合collection变成数组arrayrs=Array.from(rs)for(let i=1;i<rs.length;i++){//拿到行中对应的多选框var ck=rs[i].querySelectorAll("input[type='checkbox']")[0]//判断多选框是否被选中if(ck.checked){//删除该行rs[i].outerHTML=""}}calcAll()}//全选功能function selectAll(status) {var is=document.querySelectorAll("input[type='checkbox']")for (let i of is){i.checked=status}}//删除功能function del(){//找到trvar tr=this.parentElement.parentElement//根据tr拿到父元素 根据父元素删除tr.parentElement.removeChild(tr)}function load(){//拿到表格中所有的按钮var but=document.getElementsByClassName("dele")for(let i of but){//i是表格中每一个按钮i.onclick=del //给每个按钮都具备del方法}}load()//增加一行数据function addRow(btu){var t=btu.getElementsByClassName('a')[0].getAttribute("src")// console.log(t)var p=btu.getElementsByClassName('b')[0].textContent// console.log(p.textContent)//在表格中插入一行table.innerHTML+=`<tr><td><input type="checkbox"></td><td><img src="`+t+`" ></td><td contenteditable="true" class="price" onblur="calcRow('',this.parentElement)">`+p+`</td><td contenteditable="true" class="count" onblur="calcRow('',this.parentElement)">1</td><td class="sum">`+p+`</td><td><button onclick="calcRow('+',this.parentElement.parentElement)">+</button><button onclick="calcRow('-',this.parentElement.parentElement)">-</button><button class="dele">删除</button></td></tr>`load() //给新增的按钮设置点击事件}//页面数值变化重新计算价格function calcRow(rex,tr) {//rex是运算符号//tr是当前对应的行var td=tr.getElementsByClassName("count")[0]if(rex==="+"){td.textContent=td.textContent*1+1}if(rex==="-"){td.textContent-=1}calc(tr)}//写一个函数:算出当前一行中的价格并完成赋值function calc(tr) {//value只有在input或者select//其他的内容全部使用textContent,innerHTMLvar price=tr.getElementsByClassName("price")[0].textContentvar count=tr.getElementsByClassName("count")[0].textContentif(isNaN(price*1)){tr.getElementsByClassName("price")[0].textContent=0price=0}if(isNaN(count*1)){tr.getElementsByClassName("count")[0].textContent=0count=0}//使用单价*数量算出总价 并赋值给对应元素tr.getElementsByClassName("sum")[0].textContent=(price*count).toFixed(2)calcAll()}//窗口的加载事件  会在整个页面加载完成之后执行window.onload=()=>{//获得页面中所有的行var rs=document.getElementsByTagName("tr")for(let i=1;i<rs.length;i++){calc(rs[i])}}
</script>

界面展示

 

分享的比较简陋,希望大家认真阅读,有更好的意见可以在评论区提哦


http://chatgpt.dhexx.cn/article/mLi8npWq.shtml

相关文章

Web网页之JavaScript

一.JavaScript简介 JavaScript 是互联网上最流行的脚本语言&#xff0c;这门语言可用于 HTML 和 web&#xff0c;更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。 二.JavaScript是什么&#xff1f; JavaScript是一门脚本语言。JavaScript 是一种轻量级的编…

javascript网页设计期末作业 购物网站

本次主要介绍下之前上传的作业的主要功能&#xff0c;网页下载地址&#xff1a; 网页设计期末作业 购物网站 如果对本文章内容还有疑问可以观看视频&#xff0c;也可以在评论区留言&#xff1a; javascript 网页设计期末作业 购物网站 网页实现的主要功能有&#xff1a; 1.…

【精选】JavaScript网页时钟

文章目录 前言一、效果展示一、使用的技术二、日期对象1.指定时间2.获取目前时间 三、源代码总结 前言 今天带大家使用JavaScript定制一款网页时钟 一、效果展示 一、使用的技术 主要使用了js的日期对象,实现的时候先创建一个日期对象&#xff0c;并进行网页布局,对时间获取之…

JavaScript网页设计作业(美食网站设计与实现)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

Javascript网页设计作业: HTML班级网页设计 基于HTML+CSS+JS制作我们的班级网页(web前端学生网页设计作品)

&#x1f4c2;文章目录 一、&#x1f468;‍&#x1f393;网站题目二、✍️网站描述三、&#x1f4da;网站介绍四、&#x1f310;网站演示五、&#x1f527; 网站代码&#x1f9f1;HTML结构代码&#x1f492;CSS样式代码 六、&#x1f947; 如何让学习不再盲目七、&#x1f381…

网页之js

js jsjs基础语法规则数据类型函数定义调用对象内置对象自定义对象bom窗口移动domcss样式事件在前面的博客中我写了一些html和css样式的基础,但是,哪些仍然不够,碰到一些复杂的功能可能就无法解决了,所以我们又用到了js js 那么先来讲讲js,这个可以解决很多在页面操作上的…

3.2JavaScript网页编程——JavaScript网页编程基础

这里写目录标题 总体JS知识流程JS基本知识JS组成引入方式&#xff1a;内联、内部形式、外部输入输出字面量let&#xff08;推荐&#xff09;和var&#xff08;面经有&#xff09;变量&#xff08;标识符&#xff09;规则&#xff08;31&#xff08;不能数字开头&#xff09;&am…

网页设计之JavaScript

文章目录 JavaScript笔记一.JavaScript概述1.JavaScript历史2.javaScript与java的区别3.javaScript的作用4.JavaScript与html,css关系 二.基本语法1.位置2.变量3.控制语句 三.函数&#xff0c;内置对象与事件1.函数基本语法&#xff1a;全局函数&#xff1a; 2.内置对象&#x…

JS实现网页效果

function $(id){return document.getElementById(id); } function $name(name){return document.getElementsByName(name); }树形菜单 onclick事件改变display属性来控制子树的显示开关效果function treeShow(id){//console.log("事件添加成功");if(document.getElem…

JavaScript—— 常见网页特效

目录 一、常见网页特效1. 案例&#xff1a;网页轮播图1.1 案例分析1.1.1 左右按钮的显示与隐藏1.1.2 动态生成小圆圈1.1.3 小圆圈的排他思想1.1.4 点击小圆圈滚动图片1.1.5 点击右侧按钮一次&#xff0c;就让图片滚动一张1.1.6 克隆第一张图片1.1.7 点击右侧按钮&#xff0c;小…

php几种常用的加密解密算法

本文给大家介绍php的三种常用的加密解密算法&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你们有所帮助。 php 自带的加密函数&#xff1a; 不可逆的加密函数为&#xff1a;md5()、sha1()、crypt() md5() 用来计算 MD5 哈稀 md5(stri…

加解密算法概述

文章目录 加解密算法概述前言概述加解密算法国密算法 应用总体对称加解密非对称加解密 实现 加解密算法概述 前言 密码由来已久&#xff0c;相传公元前405年&#xff0c;雅典和斯巴达之间的伯罗奔尼撒战争最早出现密码&#xff0c;通过杂乱无章的字母拼接成一段话就是要传递的…

AES加密解密算法设计(C++)

目 录 1&#xff0e; 背景与意义 4 2. 系统设计 5 2.1系统主要目标 5 2.2主要软件需求&#xff08;运行环境&#xff09; 5 2.3功能模块与系统结构 6 3 系统功能程序设计 8 3.1基本要求部分 8 3.1.1 字节替换 8 3.1.2行移位 9 3.1.3列混合 11 3.1.4密钥加 13 3.1.5密钥扩展 14 …

加解密算法

总结 推荐使用的算法&#xff1a; 对称加密算法&#xff1a;AES-GCM-256&#xff0c;SM1 (硬件国密), SM4 (国密)非对称加密算法&#xff1a;RSA2048&#xff0c;SM2 (国密)信息摘要算法&#xff1a;SHA256&#xff0c;SM3 (国密散列算法) 对称加密算法/AES-GCM-256: GCMGM…

加密解密及算法详解

1、简介 今天我要给大家分享的是互联网通信中用到的各种加密解密算法&#xff0c;在我们介绍加解密知识前&#xff0c;首先我们了解一下密码学、密码、加密、数字签名、密钥交换等相关术语的含义。 1.1 密码学 密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规…

常见的加密解密算法

文章目录 一、概述二、区别 一、概述 加密分为单向加密和双向加密&#xff1a; 单向加密 又称为不可逆加密&#xff0c;即生成密文无法反解的一种加密方式&#xff1b;eg:MD5和SHA系列、HMAC。 双向加密 又称为可逆加密&#xff0c;即生成密文后&#xff0c;在需要的时候可以反…

RSA 加密解密算法实现(简单,易懂)!!!

目录 一、什么是RSA算法 1.对称加密 2.非对称加密 3.非对称加密的应用 二、RSA算法的基础操作步骤 1.生成公钥和私钥 2.用公钥加密信息 3.用私钥解密信息 三、AC代码 六、RSA算法的测试 七、共勉 一、什么是RSA算法 在计算机中常用的加密算法分为两类&#xff1a;对称…

13种加密与解密算法【一】

这15种加密解密算法分别是&#xff1a;散列哈希[MD5、SHA1、CRC32]&#xff0c;对称[DES&#xff0c;3DES&#xff08;TDEA、Triple DES&#xff09;&#xff0c;AES、&#xff0c;Blowfish&#xff0c;RC4、RC5&#xff0c;IDEA]&#xff0c;Base64、Rabbit、Escape。【三种分…

【2021最新版】Linux面试题总结(48道题含答案解析)

文章目录 1、绝对路径用什么符号表示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命令&#xff1f;2、怎么查看当前进程&#xff1f;怎么执行退出&#xff1f;怎么查看当前路径&#xff1f;3、怎么清屏&#xff1f;怎么退出当前命令…

linux操作系统期末考试题库

别光看点个赞呗 文档完整下载链接&#xff1a; w​​​​​​​w​​​​​​​https://download.csdn.net/download/weixin_59241300/87299684 1. cal命令 2.cat命令 3.cd命令 4.date命令 5.echo命令 6.grep命令 7.head 命令 8.ls 命令 9.touch 命令 10.more命令 …