当前位置: 首页 > news >正文

JS实现购物车01

需求

使用JS实现购物车功能01

具体代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>购物车01</title>
<style type="text/css">
.num{
width:20px;
}


</style>
</head>
<body>
<table align="center" border="2" id = "cart">
<tr>
<td colspan="5" align="center"><input id="add" type="button" value="添加"></td>
</tr>
<tr>
<td>商品名称</td>
<td>单价</td>
<td>数量</td>
<td>小计</td>
<td>操作</td>
</tr>
</table>

<script type="text/javascript">
document.getElementById("add").onclick = function(){
var goods_name = prompt("请输入商品名称");
if(goods_name==null){
alert("放弃添加");
return;
}
var goods_price = prompt("请输入商品单价");

if(goods_price==null){
alert("放弃添加");
return;
}
if(isNaN(goods_price)){
alert("单价格式不正确");
return;
}


var table = document.getElementById("cart");


var row = table.insertRow();
var col1=row.insertCell();
col1.innerHTML = goods_name;


var col2=row.insertCell();
col2.innerHTML = "¥" + goods_price;


var col3=row.insertCell();
col3.innerHTML = '<input type="button" value="-" onclick = "changNum(this);"><input type="text" class="num" value="1"><input type="button" value="+" onclick = "changNum(this);">';


var col4=row.insertCell();
col4.innerHTML = "¥" + goods_price;


var col5=row.insertCell();
col5.innerHTML = "<button οnclick='removeRow(this);'>删除</button>";


}


function removeRow(btn){
var row = btn.parentNode.parentNode;
var index = row.rowIndex;
var table = document.getElementById("cart");
table.deleteRow(index);
}


function changNum(btn){


if(btn.value == "-"){
var count = btn.nextSibling;
//是否数量为1
if(count.value == 1){
alert("数量不能继续减少了");
return;
}
count.value = parseInt(count.value) - 1;


//找到单价
var price = btn.parentNode.previousSibling.innerHTML.substring(1);//字符串截取
//改变小计
var SubTotal = count.value * price;
//填入小计
btn.parentNode.nextSibling.innerHTML = "¥" + SubTotal;


}else if(btn.value == "+"){
//控制文本框中的数量
btn.previousSibling.value = parseInt(btn.previousSibling.value) + 1;
//找到单价
var price = btn.parentNode.previousSibling.innerHTML.substring(1);//字符串截取
//改变小计
var SubTotal = btn.previousSibling.value * price;
//填入小计
btn.parentNode.nextSibling.innerHTML = "¥" + SubTotal;
}
}


</script>
</body>
</html>

效果图
样式比较丑,不要介意哈

 

转载于:https://www.cnblogs.com/yidaixiaohui/p/10163991.html

相关文章:

  • 重装Linux也不用重新配置的方法
  • AJAX发送 PUT和DELETE请求参数传递注意点,了解一下
  • GPS实时跟踪程序模拟
  • CNN卷积减少参数个数的理解(分为全连接到CNN三个层级)
  • 数据结构-算法: 分配排序(箱分配排序)
  • Vue 中循环绑定v-module表单
  • 值得记念的一刻
  • DirectX11--HR宏关于dxerr库的替代方案
  • Oracle 存储过程
  • WPF 判断调用方法堆栈
  • (转)scrum常见工具列表
  • GCC编译器对常量的一个处理
  • 串口调试程序v1.0
  • 周赛6(28)
  • 软件架构师成长之路
  • 2017-09-12 前端日报
  • bootstrap创建登录注册页面
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • extract-text-webpack-plugin用法
  • IOS评论框不贴底(ios12新bug)
  • linux安装openssl、swoole等扩展的具体步骤
  • Nacos系列:Nacos的Java SDK使用
  • Python语法速览与机器学习开发环境搭建
  • Service Worker
  • spark本地环境的搭建到运行第一个spark程序
  • SpiderData 2019年2月13日 DApp数据排行榜
  • spring security oauth2 password授权模式
  • vuex 学习笔记 01
  • 爱情 北京女病人
  • 从tcpdump抓包看TCP/IP协议
  • 给github项目添加CI badge
  • 推荐一个React的管理后台框架
  • 想写好前端,先练好内功
  • 阿里云API、SDK和CLI应用实践方案
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​一些不规范的GTID使用场景
  • # Apache SeaTunnel 究竟是什么?
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (十)T检验-第一部分
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)VirtualBox安装增强功能
  • (转) Face-Resources
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)树状数组
  • ... 是什么 ?... 有什么用处?
  • .form文件_SSM框架文件上传篇
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 使用反射注册事件
  • .NET程序员迈向卓越的必由之路
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?