JavaScript实现的购物车效果可以运用在好多地方


Posted in Javascript onMay 09, 2014

JavaScript实现的购物车效果,当然这个效果可以运用在好多地方,比如好友的选择,人力资源模块,计算薪资,人员的选择等等。下面看类似某种购物车的效果图:
JavaScript实现的购物车效果可以运用在好多地方
code:

goodsCar.js:这个js写成了一个单独的文件。主要是控制上面的列表显示的。

window.onload=function(){ 
initStore(); 
}; 
var goods=["火腿","美女","御姐","火星一日游","跑车"]; 
//==================为什么要定义一个临时存储区要想清楚哦============= 
var temps=[];//临时存储 
//初始化仓库select 添加内容 
function initStore(){ 
var select_store=document.getElementById("select_store"); 
for(var x=0;x<goods.length;x++) 
{ 
//创建option对象 
var optionNode=document.createElement("option"); 
optionNode.innerHTML=goods[x]; 
select_store.appendChild(optionNode); 
} 
} 
//------------------------------------ 
function selectGoods(){ 
//获取store的select列表对象 
var out_store=document.getElementById("select_store"); 
//获取我的商品的select列表对象 
var in_store=document.getElementById("select_my"); 
moveGoods(in_store,out_store); 
} 
function deleteGoods(){ 
//1.记录下要移动的产品 
var in_store=document.getElementById("select_store"); 
var out_store=document.getElementById("select_my"); 
moveGoods(in_store,out_store); 
} 
/* 
* 移动商品: 
1.inSotre:将商品移入仓库 
2.outStore:将商品移出仓库 
*/ 
//移动 
function moveGoods(inStore,outStore){ 
//===============清空数组缓存================== 
temps=[]; 
//循环获取store中的所有列表项 
for(var x=0;x<outStore.options.length;x++) 
{ 
var option=outStore.options[x]; 
//将被选中的列表项添加到临时数组中存储 
if(option.selected){ 
temps.push(option);//临时数组中添加数据,为了避免重复,数组缓存要清空 
} 
} 
//2.在store列表中删除已经选中的物品 
//3.在购物车中添加已经选择的产品 
for(var x=0;x<temps.length;x++) 
{ 
//每一个节点都只有一个父节点 
//先删除后添加 
outStore.removeChild(temps[x]); 
//添加 
inStore.appendChild(temps[x]); 
} 
}

下面是主文件;
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Insert title here</title> 
<style type="text/css"> 
table{ 
border:10px; 
} 
select{ 
width:200px; 
height:400px; 
} 
#order_area{ 
display:none; 
} 
</style> 
<script type="text/javascript" src="goodsCar.js"></script> 
<script type="text/javascript"> 
var selectedGoods=[];//缓存区域 
//根据购物车中的产品,生成订单 
function createOrder(){ 
//显示订单区域 
var orderAreaDiv=document.getElementById("order_area"); 
/*div对象下面有一个成员对象style,通过这个style对象可以控制div的样式 
display:表示这个对象或者叫div这个元素在文档中是否渲染 
可用的值: 
block: Object is rendered as a block element. 
none :Object is not rendered. 
....... 
在这个实例中,就用以上两个值就ok了,上面内容来自文档 
*/ 
//用节点对象的属性操作样式 
orderAreaDiv.style.display="block"; 
var select_my=document.getElementById("select_my"); 
for(var x=0;x<select_my.options.length;x++){ 
// 
var optNode=select_my.options[x]; 
selectedGoods.push(optNode.innerHTML); 
} 
//遍历产品,生成订单 
for(var x=0;x<selectedGoods.length;x++){ 
///*动态生成数据的模板 
//<div><!--name属性便于查找--> 
//<input type="checkbox" name="myorder"><span>大帅哥 20元</span> 
//</div> 
//*/ 
var divNode =document.createElement("div"); 
orderAreaDiv.appendChild(divNode); 
var inputMyOrder=document.createElement("input"); 
inputMyOrder.setAttribute("type","checkbox"); 
inputMyOrder.setAttribute("name","myorder"); 
divNode.appendChild(inputMyOrder); 
var spanNode=document.createElement("span"); 
//随机生成一个50到100的随机数 
var price=Math.floor(Math.random()*50+50); 
inputMyOrder.value=price; 
spanNode.innerHTML=selectedGoods[x]+" "+price; 
divNode.appendChild(spanNode); 
//inputMyOrder.appendChild(spanNode);错误,因为span和input是同级元素 //生组装好的divNode添加到 orderlist中 
var order_list = document.getElementById("order_list"); 
order_list.appendChild(divNode); 
} 
} 
/* 
* 再生成的订单中仍然可以选择哪些订单是准备付款的,然后进行付款 
三种选择方式:全选:1,不选:0,反选:2;checkbox自己的功能可以多选 
*/ 
function mySelect(arg){ 
//getElementsByName:根据 NAME 标签属性的值获取对象的集合。 
var orders = document.getElementsByName("myorder"); 
//在写代码的过程中错误的运用了下面这一句话 
//getElementsByTagName:获取基于指定元素名称的对象集合。 
//var orders=document.getElementsByTagName("myorder"); 
for(var x=0;x<orders.length;x++){ 
var order=orders[x]; 
if(arg=="1"){ 
order.checked=true; 
} 
else if(arg=="0"){ 
order.checked=false; 
} 
else if(arg=="2"){ 
order.checked=!order.checked; 
} 
} 
} 
//结账买单,这里面用对话款弹出的所有商品的金额做演示 
function payMoney(){ 
var orders = document.getElementsByName("myorder"); 
//总价 
var sum=0; 
for(var x=0;x<orders.length;x++){ 
var order = orders[x]; 
if(order.checked){ 
//确定要买的。 
sum=sum+Number(order.value); 
} 
} 
alert("您看看您是不是要支付"+sum+"元"); 
} 
</script> 
</head> 
<body> 
<table> 
<tr> 
<td> 
<!-- select 对象的multiple的属性的含义:设置或获取表明列表中是否可选中多个项目的 Boolean 值 --> 
<select id="select_store" multiple="multiple"> 
<optgroup label="产品列表"></optgroup> 
</select> 
</td> 
<td> 
<input type="button" value=">>" onclick="selectGoods();"/><br> 
<input type="button" value="<<" onclick="deleteGoods();"/> 
</td> 
<td> 
<select id="select_my" multiple="multiple"> 
<optgroup label="我的购物车"></optgroup> 
</select> 
</td> 
<td><input type="button" value="生成订单" onclick="createOrder();"/></td> 
</tr> 
</table> 
<hr/> 
<div id="order_area"> 
<h3>请选择您要购买的产品:</h3> 
<div id="order_list"> 
<!-- <div> 
<input type="checkbox"><span>大帅哥 20元</span> 
</div>--> 
</div> 
<input type="button" value="全选" onclick="mySelect('1');"/> 
<input type="button" value="不选" onclick="mySelect('0');"/> 
<input type="button" value="反选" onclick="mySelect('2');"/><br> 
<input type="button" value="付款啦" onclick="payMoney();"/> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
toString()一个会自动调用的方法
Feb 08 Javascript
js中iframe调用父页面的方法
Oct 30 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
Aug 13 Javascript
js鼠标点击图片切换效果代码分享
Aug 26 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
May 09 Javascript
JavaScript实现音乐自动切换和轮播
Nov 05 Javascript
Vue项目组件化工程开发实践方案
Jan 09 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
May 21 Javascript
js/jQuery实现全选效果
Jun 17 jQuery
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
May 14 Javascript
在vue中使用echarts(折线图的demo,markline用法)
Jul 20 Javascript
关于Javascript 对象(object)的prototype
May 09 #Javascript
javascript字母大小写转换的4个函数详解
May 09 #Javascript
js统计页面的来访次数实现代码
May 09 #Javascript
JavaScript Array对象扩展indexOf()方法
May 09 #Javascript
js获取鼠标点击的位置实现思路及代码
May 09 #Javascript
用js格式化金额可设置保留的小数位数
May 09 #Javascript
JQuery动画animate的stop方法使用详解
May 09 #Javascript
You might like
用session做客户验证时的注意事项
2006/10/09 PHP
php+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
第四章 php数学运算
2011/12/30 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
详解Python中的from..import绝对导入语句
2016/06/21 Python
详解Python装饰器
2019/03/25 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
python3将变量输入的简单实例
2020/08/19 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
用Python 执行cmd命令
2020/12/18 Python
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
蔻驰法国官网:COACH法国
2018/11/14 全球购物
家居设计专业个人自荐信范文
2013/11/26 职场文书
出纳员的岗位职责
2014/02/22 职场文书
信息技术培训感言
2014/03/06 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
党支部先进事迹材料
2014/12/24 职场文书
初三毕业感言
2015/07/31 职场文书