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{
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>


 

原文地址:https://www.cnblogs.com/hrhguanli/p/4580532.html