手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript实现的购物车效果可以运用在好多地方
JavaScript实现的购物车效果可以运用在好多地方
摘要:JavaScript实现的购物车效果,当然这个效果可以运用在好多地方,比如好友的选择,人力资源模块,计算薪资,人员的选择等等。下面看类似某种...

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

1

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

//<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 id="select_store" multiple="multiple">

<optgroup label="产品列表"></optgroup>

</select>

</td>

<td>

<input type="button" value=">>"/><br>

<input type="button" value="<<"/>

</td>

<td>

<select id="select_my" multiple="multiple">

<optgroup label="我的购物车"></optgroup>

</select>

</td>

<td><input type="button" value="生成订单"/></td>

</tr>

</table>

<hr/>

<div id="order_area">

<h3>请选择您要购买的产品:</h3>

<div id="order_list">

<>

</div>

<input type="button" value="全选"/>

<input type="button" value="不选"/>

<input type="button" value="反选"/><br>

<input type="button" value="付款啦"/>

</div>

</body>

</html>

【JavaScript实现的购物车效果可以运用在好多地方】相关文章:

Javascript实现图片轮播效果(二)图片序列节点的控制实现

讲解JavaScript中for...in语句的使用方法

JavaScript基于setTimeout实现计数的方法

JavaScript的while循环的使用

JavaScript实现鼠标拖动效果的方法

Javascript实现div的toggle效果实例分析

JavaScript里实用的原生API汇总

Javascript客户端脚本的设计和应用

JavaScript中this关键字使用方法详解

javascript实现模拟时钟的方法

精品推荐
分类导航