angularJs购物车列表

使用(html+css+angularjs)实现购物车结算功能:批量和全部删除,全选和反选,单价和总价,数量增减,页面隐藏和显示 需求: 要求:技术要求(html+css+angularjs) 完成页面布局,如图1.1(button按钮可以用普通按钮) 2.Ø声明数据对象,初始化商品信息,数据自拟且不低于四条 用ng-repaet指令将对象遍历并渲染到页面中 4.Ø点击”+”按钮输入框中的数量加1,同时可以计算出商品小计和购物车总价。同理,当点击”-”按钮时输入框中的数量减1,商品小计和购物车总价都会改变。在输入框中... 阅读详情
<!DOCTYPE html>
<html ng-app="myApp">
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            /*鼠标变小手*/
            button{cursor: pointer;}

            table tr:nth-child(2n){
                background-color: bisque;
            }

            #ss{width: 40px; text-align: center;}
            table{border: 2px solid red; width: 1000px;
                    text-align: center;
                 }
            tr,td{border: 1px solid black; }
        </style>
        <script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
        <script type="text/javascript" src="js/angular.min.js" ></script>
    </head>
    <body ng-controller="myCtrl">

        <input type="text" placeholder="请输入关键词" ng-model="chaxun"  />
        <input type="button" value="查询" ng-click="cxun()" />
        <input type="button" value="添加" ng-click="tianjia()" />
        <button ng-click="delSelect()" >批量删除</button>
        排序:<select ng-model="selorder">
            <option value="prices">数量正序</option>
            <option value="-prices">数量倒序</option>
        </select>



        <table cellspacing="0px">
            <tr>
                <td><input type="checkbox" ng-model="selectAll" ng-click="selectAllFun()" /></td>
                <td>产品编号</td>
                <td>产品名称</td>
                <td>购买数量</td>
                <td>产品单价</td>
                <td>产品总价</td>
                <td>操作</td>
            </tr>
            <tr ng-repeat="x in datas | filter:chaxun | orderBy:selorder ">
                <td><input type="checkbox" ng-model="x.state"/></td>
                <td>{{x.id}}</td>
                <td>{{x.name}}</td>
                <td>
                    <button ng-click="jian($index)">-</button>
                        <input id="ss" type="text" ng-model="x.nums" />
                    <button ng-click="jia($index)">+</button>
                </td>
                <td>{{x.prices}}</td>
                <td>{{x.prices*x.nums}}</td>
                <td>
                    <button ng-click="remove($index)">删除</button>
                    <button ng-click="xiugai($index)">修改</button>
                </td>
            </tr>
        </table>

        <div>
            <h3>总价:</h3><h3>{{zongjia()}}</h3>
            <h3>总数:</h3><h3>{{zongshu()}}</h3>
            <button ng-click="removeAll()">清空购物车</button>
        </div>
        <!--添加页面-->
        <fieldset style="margin-top: 20px;" ng-show="sos" >
            <legend>新增商品:</legend>
            产品编号
            <input type="text" ng-model="id_1" required/>
            <span id="sp1"></span>
            <br/>   产品名称
            <input type="text" ng-model="name_1" required/>
            <span id="sp2"></span>
            <br/> 购买数量
            <input type="number" ng-model="nums_1" required/>
            <span id="sp3"></span>
            <br/> 产品单价
            <input type="text" ng-model="prices_1" required/>
            <span id="sp4"></span>
            <br/>
            <input type="button" value="保存" ng-click="bz()" />
        </fieldset>
        <!--修改页面-->
        <fieldset style="margin-top: 20px;"  ng-show="lol">
            <legend>修改商品信息:</legend>
            产品编号
            <input type="text" ng-model="id_2" required/>
            <span id="sp1_1"></span>
            <br/>   产品名称
            <input type="text" ng-model="name_2" required/>
            <span id="sp2_1"></span>
            <br/> 购买数量
            <input type="number" ng-model="nums_2" required/>
            <span id="sp3_1"></span>
            <br/> 产品单价
            <input type="text" ng-model="prices_2" required/>
            <span id="sp4_1"></span>
            <br/>
            <input type="button" value="确认修改" ng-click="bz2()" />
        </fieldset>

        <script>
            var idx = -1 ;
            var app = angular.module("myApp",[]);

            app.controller("myCtrl",function($scope){
//              自定义数据
                $scope.datas=[{
                    id:1001,
                    name:"xiaomi6",
                    nums:1,
                    prices:3888,
                    state: false
                },{
                    id:1002,
                    name:"iphone7",
                    nums:1,
                    prices:5888,
                    state: false
                },{
                    id:1003,
                    name:"htc7",
                    nums:1,
                    prices:4888,
                    state: false
                },{
                    id:1004,
                    name:"oppo5",
                    nums:1,
                    prices:3888,
                    state: false
                },{
                    id:1005,
                    name:"vivo7",
                    nums:1,
                    prices:4300,
                    state: false
                }
                ];


                $scope.jian = function(index){

                    if($scope.datas[index].nums>1){
                        $scope.datas[index].nums--;
                    }else{
                        alert("数量不能为负数");
                    }

                }


                $scope.jia = function(index){
                    $scope.datas[index].nums++;
                }


//              全选和反选
                $scope.selectAllFun = function(){

                    if($scope.selectAll){
                        for (var x = 0 ; x<$scope.datas.length; x++) {
                            $scope.datas[x].state = true;
                        }
                    }else{

                        for (var x = 0 ; x<$scope.datas.length; x++) {
                            $scope.datas[x].state = false;
                        }



                    }

                }


//              批量删除
                $scope.delSelect = function(){
                    var arrs = [];
                    for (var x = 0 ; x<$scope.datas.length; x++) {
                        if($scope.datas[x].state){
                            arrs.push($scope.datas[x].name);
                        }
                    }

                    if(arrs.length<=0){
                        alert("请选择要删除的数据");
                    }else{

                        for (var x = 0 ; x<arrs.length; x++) {

                            for (var xx = 0; xx<$scope.datas.length; xx++) {

                                if(arrs[x]==$scope.datas[xx].name){
                                    $scope.datas.splice(xx,1);
                                }

                            }

                        }

                    }


                }



//              删除
                $scope.remove = function(index){
                    if(confirm("删除吗?")){
                        $scope.datas.splice(index,1);
                    }
                }

//              总价
                $scope.zongjia = function(){
                    var zprice = 0;
                    for (var x = 0 ; x <$scope.datas.length; x++) {
                        zprice+=$scope.datas[x].nums*$scope.datas[x].prices;
                    }
                    return zprice;
                }
//              总数
                $scope.zongshu = function(){
                    var nums = 0;
                    for (var x = 0 ; x <$scope.datas.length; x++) {
                        nums+=$scope.datas[x].nums;
                    }
                    return nums;
                }


//              清空
                $scope.removeAll = function(){

                    $scope.datas=[];

                }

//              添加    显示添加表格
                $scope.tianjia = function(){
                    $scope.sos = true;
                }

//              修改   显示修改表格
                $scope.xiugai = function(index){
                    $scope.lol = true;

                    idx = index;

                        $scope.id_2 = $scope.datas[index].id;
                        $scope.name_2 = $scope.datas[index].name;
                        $scope.nums_2 = $scope.datas[index].nums;
                        $scope.prices_2 = $scope.datas[index].prices;

                }

//              查询
                $scope.cxun = function(){


                var zz = [];
                var cc = $scope.chaxun;

                for (var i = 0 ; i<$scope.datas.length; i++) {
                    if( $scope.datas[i].name.indexOf(cc)!=-1){
                        zz.push($scope.datas[i]);

                    }
                }
                $scope.datas=zz;

                }


//              添加
                $scope.bz = function(){


                    var i = $scope.id_1;
                    var n = $scope.name_1;
                    var u = $scope.nums_1;
                    var p = $scope.prices_1;



                    var flag = true;
                    if(i==null||i==""){
                        $("#sp1").html("不能为空");
                        flag=false;

                    }else{
                        $("#sp1").html("");
                        flag=true;
                    }


                    if(n==null||n==""){
                        $("#sp2").html("不能为空");
                        flag=false;

                    }else{
                        $("#sp2").html("");
                        flag=true;
                    }


                    if(u==null||u==""){
                        $("#sp3").html("不能为空");
                        flag=false;

                    }else{
                        $("#sp3").html("");
                        flag=true;
                    }


                    if(p==null||p==""){
                        $("#sp4").html("不能为空");
                        flag=false;

                    }else{
                        $("#sp4").html("");
                        flag=true;
                    }

                if(flag){

                    $scope.datas.push({
                        id:$scope.id_1,
                        name:$scope.name_1,
                        nums:$scope.nums_1,
                        prices:$scope.prices_1
                    });


                    $scope.id_1="";
                    $scope.name_1="";
                    $scope.nums_1="";
                    $scope.prices_1="";



                    $scope.sos = false;

                }   

                };

//              修改
                $scope.bz2 = function(){

                                $scope.datas[idx].id == $scope.id_2
                                $scope.datas[idx].name = $scope.name_2;
                                $scope.datas[idx].nums = $scope.nums_2;
                                $scope.datas[idx].prices = $scope.prices_2;

                                $scope.lol = false;

                }



            });

        </script>


    </body>
</html>

反选:

//全选/反选多选框的点击事件
                $scope.cb = function(){

                    if($scope.ck){//判断当点击全选框时
                        for(var i=0;i<$scope.datas.length;i++){
                            if($scope.datas[i].state){//当其他复选框为选中状态时
                                $scope.datas[i].state = false;//改为不选中状态
                            }else{//当其他复选框为不选中状态时
                                $scope.datas[i].state = true;//改为选中状态
                            }
                        }

                    }else{//判断当不点击全选框时
                        for(var i=0;i<$scope.datas.length;i++){
                            if($scope.datas[i].state){//当其他复选框为选中状态时
                                $scope.datas[i].state = false;//改为不选中状态
                            }else{//当其他复选框为不选中状态时
                                $scope.datas[i].state = true;//改为选中状态
                            }
                        }
                    }

                }

效果:这里写图片描述

AngularJS的-查询列表 AngularJS的查询列表,适合刚刚接触AngularJS的人 立即下载

相关推荐

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

AngularJS的列表显示

table的头: &lt;div class="table-responsive" style="margin-top: 20px;"&gt; &lt;table id="table" class="table table-bordered table-hover table-condensed data-lis...

qq_一望损莓苔的博客 2050

python设计俄罗斯方块(附源码)

【代码】python设计俄罗斯方块(附源码)

牧魂的博客 2059

详细介绍 AngularJS 表单的各种特性、用法和最佳实践

AngularJS 还允许开发者自定义验证器,并将其应用到表单控件上。自定义验证器可以用于处理复杂的业务逻辑和自定义的验证规则。AngularJS 表单提供了丰富的特性和功能,包括表单控件的类型、属性和验证指令,以及条件显示/隐藏字段、禁用/启用按钮等交互性的操作。通过合理地应用这些特性,开发者能够轻松地构建、验证和处理表单数据。本文详细介绍了 AngularJS 表单的各种知识和技巧,希望对您在实际项目中使用 AngularJS 处理表单有所帮助。

网络技术联盟站 294

麒麟V10服务器多硬盘安装与分区实战:告别自动分区,手动分配/boot、swap和/根目录

本文详细介绍了麒麟V10服务器在多硬盘环境下的手动分区策略,包括/boot、swap和/根目录的优化分配方案。通过SSD与HDD混合存储架构的合理规划,提升系统性能和运维效率,适用于企业级定制化系统部署需求。

weixin_26976635的博客 406

手把手搭建你的第一个OCT仿真模型:用Python和光学仿真库重现A-SCAN信号

本文详细介绍了如何使用Python和光学仿真库搭建OCT仿真模型,重现A-SCAN信号。从环境配置、干涉仪建模到信号处理全流程,手把手教你实现光学相干层析成像的核心技术。通过代码示例和性能优化技巧,帮助开发者深入理解OCT原理并应用于医疗诊断等领域。

weixin_42562079的博客 240

AngularJS用户列表

a{ text-decoration: none; color: #000; } table tr:nth-child(even){ background: #EEEEEE; } table tr:nth-child(odd){ background: #fff; } var app = a

Mike_8859的博客 374

MOSFET导通电阻Rdson全解析:物理组成、公式推导与工程选型要点

在功率电子设计中,MOSFET作为核心开关器件,其导通电阻Rdson直接决定导通损耗与系统效率。从半导体物理角度看,Rdson并非单一固定值,而是由源极电阻、沟道电阻、累积层电阻、JFET区电阻、漂移区电阻及衬底电阻等多个分量串联而成,并随栅极驱动电压、结温以及击穿电压等级发生显著变化。理解Rdson的物理来源与数学表达,有助于工程师在低压大电流与高压小电流等不同场景中合理选型、优化驱动电压并准确估算热损耗。文章从沟道电阻公式出发,深入剖析耐压与导通电阻的物理矛盾、温度系数的影响规律,并给出数据手册参数的正

weixin_29163857的博客 194

AngularJS(7)-表格

ng-repeat 指令可以完美的显示表格。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选择框Select</title> <script src="angular-1.4.1/ang...

weixin_33716557的博客 597

Angular 相关的知识点和项目汇总

Angular 知识点和项目汇总

weixin_45428910的博客 578

当Flowable遇上AI:智能流程决策的未来探索

本文探讨了Flowable工作流引擎与AI技术的融合,构建智能流程决策系统的前沿实践。通过动态流程控制、机器学习优化表达式、自然语言生成规则等创新方法,显著提升业务流程的自动化水平和决策效率。重点解析了AI如何赋能Flowable核心引擎,实现从静态规则到动态智能的跨越式发展。

weixin_29271053的博客 392

购物车angularJS删除和模糊查询还有排序

var app = angular.module("myApp",[]); app.controller("myCtrl",function($scope){ $scope.products = [{ "id":80, "name":"iphone", "price":5400 },{ "id":1200, "name":"ipad mini", "price":2200 },

Wangmengyao1115的博客 336

62. 如何通过增强(Enhancement) 的方式给 SAP ABAP 标准程序增添新功能

本文通过一个实际的例子,介绍了如何不通过修改 SAP 标准 ABAP 程序源代码的方式,对其的功能进行增强,即采取 ABAP 增强开发的方式进行二次开发,这是一种在实际 SAP 项目实施过程中使用非常广泛的技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3306

angularJS制作的购物车功能

<!DOCTYPEhtml> <htmllang="en"ng-app="myapp"> <head> <metacharset="UTF-8"> <title>Document</title> <style> body,html{width:10...

weixin_34292402的博客 112

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ionic+meta name+AnjularJS+添加购物车

html> html lang="en"> head> meta charset="UTF-8"> title>ionictitle> --> meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0, minimum-scale=1.0, maxi

Logitech12的博客 420

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

网站 购物车

angular.module("wuyu", []).controller("domec", function($scope) { $scope.stus = [{ ck: false, name: 'qq', price: 12.90, number: 2, },  { ck: false, name: 'wx', price: 23.90, number: 1, },

无糖咖啡有点苦 399

AngularJs购物车代码。

购物车     商品列表                                                                                                                   产品价格:                                      

BoBrother的博客 512

购物车

&lt;!DOCTYPE html&gt;&lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;&lt;/title&gt; &lt;style&gt; tr:nth-child(odd){ background: #00FFFF; } tr:nth-child(even)

lsq666888的博客 201

Angular实现简单购物车效果(代码)

html ng-app="myApp"> head> meta charset="UTF-8"> title>Titletitle> link rel="stylesheet" href="css/bootstrap.min.css"> script src="js/lib/AngularJS/angular.min.js">script> style>

v_111的博客 1858

购物车angular

html> html> head lang="en"> meta charset="UTF-8"> title>title> script type="text/javascript" src="angular-1.3.0.js">script> style> .s{ text-decoration: none;

adminFanj的博客 305

购物车案列

购物                             var app=angular.module('myApp',[]);         app.controller('myCtrl',function($scope){             //声明数据对象,初始化商品信息             $scope.shopList=[          

qq_39972250的博客 279

Angularjs实现简单的购物车

var app = angular.module("myApp", []);             app.controller("myCtrl", function($scope) {                 $scope.shops = [{                     name: "qq1",                     price: 12.9,

Liquor2的博客 633

angularJS--购物车实现全选/取消全选

html> html lang="en" ng-app="testMo"> head> meta charset="UTF-8"> title>title> link rel="stylesheet" href="css/bootstrap.css"> style> .div1{ margin: 20px; }

IT666DHW的博客 1017

capcap 评测:双击 ⌘ 即截图的 macOS 原生菜单栏工具,零学习成本

capcap 是一款 macOS 原生菜单栏截图工具:双击 `⌘ Command` 即可唤起全屏选区,窗口一点即贴边、拖拽即截区域,截图瞬间进入浮动编辑器,支持箭头、马赛克、序号、高亮等标注,确认后立即复制到剪贴板。它常驻菜单栏、不占 Dock、无遥测、无订阅,是追求「快」的截图党的理想选择。 [![capcap 应用横幅:macOS 原生菜单栏截图工具主视觉](https://raw.gitc

gitblog_01081的博客 1037

使用angularjs和bootstrap写一个简单的购物车

初学angularjs,联系编写一个简单的angularjs应用--购物车,只是模拟功能。 源代码: html> html> head lang="en"> meta charset="UTF-8"> title>title> link rel="stylesheet" href="../../vendor/bootstrap/css/bootstrap.m

wyq024613的博客 1972
上一篇: html中setAttribute属性给控件赋予新属性
下一篇: OkHTTP网络请求封装
user_app
博客等级 码龄9年 7粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值