JavaScript做简单的购物车效果(增、删、改、查、克隆)

2023-11-01

比如有时候遇到下面这种情况,点击加入购物车,然后在上方的购物车中动态的添加商品以及商品的信息,我们就可以通过JavaScript实现简单的这些操作。

在这里插入图片描述首先我们需要在html文档中,通过css对页面的布局做一些简单的设置。并创建两个模板,其display属性设为隐藏。后面再通过克隆的方法往指定的位置添加元素。大致css样式如下:

.buy {
            width: 200px;
            height: 300px;
            display: inline-block;
            border: 1px dashed grey;
            border-radius: 15px;
            text-align: center;
            margin: 0 20px;
            padding: 5px;
            box-sizing: border-box;
        }
 
        .buy img {
            width: 150px;
            height: 150px;
        }
 
        .buy:hover {
            border-color: red;
        }

上面是推荐商品中商品那个div的样式

就上方这个例子来说,我们需要的模板可以像下方的代码所示:

 <tr class="model2" style="display: none;">
                <td>
                    <img src="img/img1.jpg">
                </td>
                <td>OPPO R15新品</td>
                <td>2999</td>
                <td>1</td>
                <td>2999</td>
                <td>
                    <a href="javascript:void(0)">删除</a>
                </td>
            </tr>

上面的是添加到购物车里面的元素的模板。

 <div class="model1" style="display: none;">
            <img src="img/img1.jpg">
            <div class="desc">OPPO R15新品</div>
            <div class="price">2999</div>
            <div class="pay">加入购物车</div>
        </div>

上面的是添加到推荐商品中的元素的模板。

在html和css都已经设置好了之后,我们就开始写js代码,实现动态的添加和删除。

首先我们先获取所有商品的信息,这个一般情况是从后台数据库那里得到,今天这个是一个简单的例子,我们就直接定义几个商品。如下所示:

var products = [
            { img: "img/img1.jpg", desc: "OPPO R15新品", price: 2999 },
            { img: "img/img2.jpg", desc: "HUAWEI P20", price: 3788 },
            { img: "img/img3.jpg", desc: "HUAWEI P20 Pro", price: 4988 },
            { img: "img/img4.jpg", desc: "荣耀畅玩", price: 799 },
            { img: "img/img5.jpg", desc: "vivo Y69全网通", price: 1199 }
        ];

这是定义的这个商品是一个数组,所以我们可以用数组的forEach()方法,实现一下将数据添加到网页之中。

 products.forEach(function (pro) {
            var copy = $(".model1")[0].cloneNode(true);//克隆模板
            // console.log(copy);
            copy.className = "buy";//改变克隆的模板的class类名
            copy.style.display = "inline-block";//将克隆的元素从隐藏转换为显示,因为可能有多个,所以我们将其转换为行内块
            var _children = copy.children;//获取克隆元素的所有子节点,并重新赋值
            _children[0].src = pro.img;
            _children[1].innerHTML = pro.desc;
            _children[2].innerHTML = pro.price;
            $(".box")[0].appendChild(copy);//将克隆好的并做了修改的dom元素添加到指定位置。
 
 
        });

经过上面的代码之后,我们已经在网页中动态的添加了一些元素数据。接下来就是实现添加购物车以及删除的功能。

实现添加以及删除的代码如下:

        var btns = $(".pay");//获取所有需要添加功能的元素
        for (var i = 0, len = btns.length; i < len; i++) {
            btns[i].onclick = function () {
                var mes = this.parentNode.children;//获取点击的那个元素的父节点的所有子节点,然后再分别获取其中的值
                // console.log(mes);
                var img = mes[0].src,//获取图片的路径
                    desc = mes[1].innerHTML,//获取desc信息
                    price = mes[2].innerHTML;//获取价格信息
                var copy = $(".model2")[0].cloneNode(true);//克隆模板
                // console.log(img, desc, price);
                copy.className = "";//修改类名
                copy.style.display = "table-row";//让元素显示
                var _child = copy.children;//给模板中的元素修改value值
                _child[0].firstElementChild.src = img;
                _child[1].innerHTML = desc;
                _child[2].innerHTML = price;
                _child[4].innerHTML = price*1;
                $(".carbox table")[0].appendChild(copy);//添加到指定位置
                copy.lastElementChild.firstElementChild.onclick = function () {//为删除绑定点击事件
                    copy.parentNode.removeChild(copy);//点击删除的时候,相当于删除的添加的这一行
                }
            }
        }

更多请见:http://www.mark-to-win.com/tutorial/50682.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript做简单的购物车效果(增、删、改、查、克隆) 的相关文章

随机推荐

  • spring

    1 Spring简介 1 1 Spring概述 官网地址 https spring io Spring 是最受欢迎的企业级 Java 应用程序开发框架 数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好 易于测试 可重用的
  • 【算法】队列——解密QQ号

    新学期开始了 小哈是小哼的新同桌 小哈是个小美女哦 小哼向小哈询问QQ号 小哈当然不会直接告诉小哼啦 原因嘛你懂的 所以小哈给了小哼一串加密过的数字 同时小哈也告诉了小哼解密规则 规则是这样的 首先将第1个数删除 紧接着将第2个数放到这串数
  • CentOS7添加永久路由之一

    一 默认在系统中添加的路由会随着网络重新启动丢失 root vm al bj2 web01 route n Kernel IP routing table Destination Gateway Genmask Flags Metric R
  • Vue 渲染流程详解

    在 Vue 里渲染一块内容 会有以下步骤及流程 第一步 解析语法 生成AST 第二步 根据AST结果 完成data数据初始化 第三步 根据AST结果和DATA数据绑定情况 生成虚拟DOM 第四步 将虚拟DOM 生成真正的DOM插入到页面中
  • python针对Excel文件处理

    一 Excel文件处理介绍 需要用到第三方库 openpyxl 最常用 xlrd xlwt pandas 安装第三方库 pip install openpyxl 二 openpyxl模块 openpyxl模块的三大重要组件 1 工作簿 包含
  • 前置声明(Forward declaration)

    前置声明是指声明一个类或结构体而不定义它 比如 class A struct B 在声明之后 定义之前 该类或结构体被称为不完全类型 incompletion type 意思是 知道类型A和B 但不知道他包含哪些内容 不完全类型的使用有一些
  • pip指定路径安装文件

    pip指定路径安装文件 由于某些原因 我们使用pip命令安装一些模块时 速度慢的离谱 所以我们有时会用其他方式在网上下载资源包 以zh core web lg 2 3 1 tar gz为例 再通过pip安装 格式 pip install t
  • loadrunner+fiddler代理录制

    今天在录制脚本的时候遇到一个问题 因为公司的电脑IE版本为IE9 且不能降低版本 所以设置了个loadrunner代理 代理是设置了应用服务器的IP和端口 但是在录制的时候很多静态文件没有出来 因为loadrunner代理只能代理录制代理I
  • Spark-特征选择(scala)

    spark特征选择 基于scala语言编写 ChiSqSelector 特征选择试图识别用来构建模型的相关特征 它减少了特征空间的大小 既可以提高速度又可以提高统计学习行为的结果 ChiSqSelector实现了卡方特征选择 它能够操作带有
  • s捕捉异常处理是使用js try catch方式

    在JavaScript可以使用try catch来进行异常处理 例如 try foo bar catch e alert e name e message 目前我们可能得到的系统异常
  • Kali使用VMware安装方法。

    Kali使用VMware安装方法以及修改中文界面 一直使用的Centos系统 今天我们换种口味 来玩玩kali 1 什么是kali 手指犹如轻快的舞步在键盘上不断地敲击着 清脆的咔擦声音刺回荡在空荡的房间 黑绿色的屏幕光反射在一张恐怖的面具
  • 微信小程序是怎么做的?

    微信小程序是一种轻量级的应用 它可以在微信内部直接使用 无需下载和安装 那么 微信小程序是怎么做的呢 微信小程序制作的大概步骤 微信小程序制作主要包括以下几个步骤 注册小程序账号 在小程序制作工具创建小程序 设计小程序页面 提交审核 成功发
  • Webpack学习

    webpack是一种打包工具 安装 npm install webpack webpack cli webpack dev server D webpack配置文件 可命名 webpack config js 单个总的配置文件 也可以拆分成
  • node 模块引入与加载机制

    一 说在前面 在Node js中 以模块为单位划分功能 通过一个完整的模块加载机制使得开发人员可以将应用程序划分为多个不同的部分 模块的使用可以提高代码重用率 提高应用程序的开发效率 而且开发人员可以根据具体的需求引入第三方模块或者自定义模
  • Java 8中 Objects 类源码实现与分析

    Objects 类位于 java util 包下 自 JDK 1 7 版本新增的 它是一个 final 类 不能被继承 且构造函数是 private 的 不能被实例化 它提供了一系列操作Object对象的静态方法 通常会被当做工具类去使用
  • org.junit.jupiter.api不存在如何解决

    问题描述 报错信息 解决方案 在pom xml中添加依赖 代码如下
  • SpringCloud简单实战

    我学习时搭建的父子项目 所以文章里依赖没有
  • Windows 系统cmd设置添加静态路由方式

    电脑上添加静态路由 cmd设置路由 方法 步骤 1 首先在 运行 窗口输入cmd 按WIN R打开运行窗口 然后回车进入命令行 输入 route add 10 253 251 0 mask 255 255 255 0 p 192 254 1
  • 前端实际开发中的命名规范(个人建议)

    如果说计算机科学只存在两个难题 缓存失效和命名 那我觉得前端的命名占有一席之地 让人难以理解的命名方式 单词拼写错误 中英文混用 以数字1 9或者以a z命名 中文拼音命名 强制缩写 命名方法 每个单词之间用 或者 连接 小驼峰 除第一个单
  • JavaScript做简单的购物车效果(增、删、改、查、克隆)

    比如有时候遇到下面这种情况 点击加入购物车 然后在上方的购物车中动态的添加商品以及商品的信息 我们就可以通过JavaScript实现简单的这些操作 首先我们需要在html文档中 通过css对页面的布局做一些简单的设置 并创建两个模板 其di