JavaScript实现的购物车效果可以运用在好多地方_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>

时间: 2024-08-19 14:03:03

JavaScript实现的购物车效果可以运用在好多地方_javascript技巧的相关文章

javascript实现下班倒计时效果的方法(可桌面通知)_javascript技巧

本文实例讲述了javascript实现下班倒计时效果的方法.分享给大家供大家参考.具体如下: 周末了,搞个下班倒计时,娱乐下. 确保下面三点: 1.非IE浏览器,较高Chrome版本,已开启HTML5桌面通知.具体设置见下面截图 2.将这个HTML放到本地Web服务器上测试,直接双击运行无法弹出桌面通知 顺带提下,这个程序很容易扩展成定时通知. 做这个东西的过程有两点比较纠结,总结下: 1.parseInt("09")返回的是0.正确做法是parseInt("09"

基于JavaScript实现百叶窗动画效果不只单纯flas可以实现_javascript技巧

看到这种什么百叶窗的动画,以为都是flash实现的,最近突然灵光一闪,想到了用js实现(虽然我不是做前端的,本人做.net).代码虽然实现了,但是比较乱,先上个图: 一个js的动画,以前以为只有flash可以实现 代码主要就是一些数学的计算,然后结合html,css打造出类似flash的效果. 下面贴出主要的部分代码: function all(books){ for(var i=;i<self.rows;i++) { for (var j = ; j < self.columns; j++)

javascript仿XP关机效果的弹出窗口功能_javascript技巧

弹出窗口 下拉弹出窗口时会将其隐藏,关闭时会让其显示,目的是在IE中防止弹出的DIV挡不住下拉框 弹出窗口 弹出窗口

javascript模拟的Ping效果代码 (Web Ping)_javascript技巧

当然,在请求时无法统计HTTP头部的长度,所以当请求数据包长度在最大传输单元临界点时,额外的HTTP头可以导致IP分组,因此存在一定的误差.(2009/6/21) 在线演示:http://demo.jb51.net/js/2011/ping/ 核心代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xh

Javascript模拟scroll滚动效果脚本第1/2页_javascript技巧

1something 2something 3something 4something 5something 6something 7something 8something 9something 10something 11something 12something 13something 14something 15something 16something 17something 18something 19something 20something 21something 22somet

javascript省市区三级联动下拉框菜单实例演示_javascript技巧

本文实例讲述了javascript实现省市区三级联动下拉框菜单代码,像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能,分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"

JS打字效果的动态菜单代码分享_javascript技巧

这是一款基于javascript实现的打字效果的动态菜单特效代码,分享给大家学习学习. 运行效果图:----------------------查看效果----------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式. 为大家分享的JS打字效果的动态菜单代码如下 <html> <head> <title>JS打字效果的动态菜单</title> <meta http-equiv="imagetoolbar&

使用 JavaScript 创建可维护的幻灯片效果代码第1/3页_javascript技巧

第一步:分析问题(Analizing the problem) 创建一个好的脚本,第一步应该是去分析哪些是你要完成的:我们想要创建一个照片的幻灯片效果,并且我们想要保持维护的方便. 如何创建一个幻灯片效果 在一个网站上拥有幻灯片有几种方法: 在文档中包含所有的图片.  当他运行在无 JavaScript 状态,这是一个安全的选择.而且,当页面被载完,所有的图片也会将被载完.然而,这个方式只适用于少量的图片.  在文档中包含第一张图片,并且有一个创建幻灯片功能的服务器端脚本.  这也是相当安全的,

javascript suggest效果 自动完成实现代码分享_javascript技巧

首先,用到的框架当然是我的框架mass Framework,当然你用其他框架也可以,如jQuery,没有什么复杂的东西.只要弄懂原理,一下子就能搞出来.想必,以后你们工作也遇到做搜索框的活儿. 由于本人没有后端,因此取用一个对象作为本地数据库.而我现在要做的,其实远远比suggest高级,类似IDE的语法提示的东西.当前成品已放到github上. 好了,我们动手吧.首先是结构层,装了FF的同学可以在百度首页查看源码,当输入几个字母时,会动态生成了那些HTML.不过怎么也好,其成就是一个DIV放到