首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

添加购物车的js

以下是一个简单的前端 JavaScript 示例代码,用于实现将商品添加到购物车的功能:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>添加购物车示例</title>
</head>

<body>
  <div>
    <h2>商品列表</h2>
    <ul id="product-list">
      <li data-id="1" data-name="商品1" data-price="10">商品1 - 价格: 10 元</li>
      <li data-id="2" data-name="商品2" data-price="20">商品2 - 价格: 20 元</li>
      <li data-id="3" data-name="商品3" data-price="30">商品3 - 价格: 30 元</li>
    </ul>
  </div>

  <div>
    <h2>购物车</h2>
    <ul id="cart-list"></ul>
  </div>

  <script>
    // 获取商品列表和购物车列表的 DOM 元素
    const productList = document.getElementById('product-list');
    const cartList = document.getElementById('cart-list');

    // 为每个商品项添加点击事件监听器
    productList.addEventListener('click', function (event) {
      if (event.target.tagName === 'LI') {
        const product = event.target;
        const productId = product.getAttribute('data-id');
        const productName = product.getAttribute('data-name');
        const productPrice = product.getAttribute('data-price');

        addToCart(productId, productName, productPrice);
      }
    });

    // 添加到购物车的函数
    function addToCart(id, name, price) {
      let cartItem = document.querySelector(`#cart-list li[data-id="${id}"]`);
      if (cartItem) {
        // 如果商品已在购物车中,增加数量
        let quantity = parseInt(cartItem.getAttribute('data-quantity')) + 1;
        cartItem.setAttribute('data-quantity', quantity);
        cartItem.textContent = `${name} - 价格: ${price} 元 x ${quantity}`;
      } else {
        // 如果商品不在购物车中,创建新的购物车项
        cartItem = document.createElement('li');
        cartItem.setAttribute('data-id', id);
        cartItem.setAttribute('data-name', name);
        cartItem.setAttribute('data-price', price);
        cartItem.setAttribute('data-quantity', 1);
        cartItem.textContent = `${name} - 价格: ${price} 元 x 1`;
        cartList.appendChild(cartItem);
      }
    }
  </script>
</body>

</html>

在上述示例中:

  • 基础概念:通过 DOM 操作获取商品列表和购物车列表元素,为商品项添加点击事件监听器,获取商品信息并处理添加到购物车的逻辑。
  • 优势:实现简单,易于理解和扩展。
  • 类型:基于原生 JavaScript 的前端交互实现。
  • 应用场景:适用于简单的网页购物车功能展示。

可能遇到的问题及解决方法:

  • 如果点击商品没有反应,检查事件监听器是否正确绑定,以及选择器是否准确获取到了元素。
  • 如果购物车中商品数量不正确,检查数量更新的逻辑是否正确处理。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

黑马瑞吉外卖之购物车功能开发(添加购物车和购物车数据展示)

最终我们就来到了实际的js里面缩写的据具体的发送请求数据的接口。 然后就是这样啦!前端后面当然会接收数据,然后根据后端返回的数据做出响应即可。...,因为这个购物车表中会添加很多的数据,我们需要按照片不同的用户来区分不同的用户的购物车,当然没非常重要的就是,如果用户登录到前台页面,所展示也就是他的id下面所关联到的购物车数据。...那么后台我们需要做的是什么,首先需要做的就是一个添加,因为我们刚刚做的就是一个添加的功能。点击按钮然后添加。就是这样,所以那么我们据先完成这样的功能。...// 如果不存在,则添加到购物车,数量默认是一 // 获得当前用户的id Long userId = (Long) session.getAttribute(...为什么还需要返回,当然了,因为数据添加成功以后就可以将这个购车的数据返回出去,因为我们取到成功的状态和数据。 当然这个展示查询的话一定是需要我们后台给的购物车的查询接口的。

1.1K20
  • 简单实用的商品购物和添加购物车UI设计

    简要说明 这是一款使用jQuery和CSS3制作的简单实用的商品购物和添加购物车界面设计方案。用户可以在商品购物界面中预览各种型号、颜色、尺寸的商品。...然后通过点击添加到购物车按钮就可以将该商品添加到购物车中,操作简单直观。 在传统的购物网站中,用户在商品展示界面看中了一件商品之后,点击这件商品的缩略图,然后可以键入到对应水平的子页面中。...在这个子页面中,用户可以选择查看一些商品的属性,然后把商品添加到购物车中。...但是在这个购物车界面设计中,用户可以直接在购物界面查看商品的属性,并直接将商品添加到购物车中,简化了用户的操作,大大提升了用户的体验度。...每一个无序列表项中又包含一个无序列表,由于制作商品的图片画廊。div.cd-customization是包含商品的属性和“添加到购物车”按钮的面板。

    1.8K40

    html js 数组添加,js数组添加数据

    大家好,又见面了,我是你们的朋友全栈君。 我们在学习python的过程中,会对列表、字符串添加数据。在Javascript中,我们也会对数组添加数据。在不同的位置添加数据有着不同的方法。...本文介绍js数组添加数据的三种方法:1、结尾添加push()方法;2、头部添加unshift() 方法;3、向/从数组指定位置添加/删除项目,然后返回被删除的项目splice() 方法。...可添加多个元素。 3、返回值 把指定的值添加到数组后的新长度。...向数组添加的第一个元素。 b:可选。向数组添加的第二个元素。 c:可选。可添加若干个元素。 3、返回值 arrayObject 的新长度。...tony alert(arr.splice(1,0,’tony’)) //返回值为空 alert(arr) // smile,tony,2,3,marie 以上就是js数组添加数据的四种方法,大家可以根据在不同的位置添加数据选择不同的方法哦

    26.2K10

    iOS动画之【添加商品到购物车】:将商品图片icon 移动到购物车iocn的位置

    应用场景:购物车模块,将商品添加商品到购物车 如果是扫商品条码添加购物车,推荐延迟1.5S再重新识别。...,将商品添加商品到购物车 2、文章地址:https://blog.csdn.net/z929118967/article/details/103660899 3、视频地址:https://live.csdn.net.../v/167358 II 、代码实现 添加商品到购物车的事件传递,由cell->V->VC 核心处理代码在工具类JoinCartAnimationTool中 2.1 商品的cell BillingRightCell.m...sender) { //sender 即添加按钮的控件 //btn.imageView:展示购物车icon的imageView...: 例如商品图片 @param boxImgV view移动的最后目标视图: 例如购物车icon控件 @param inView imageView boxImgV 参考的坐标系。

    23830

    js动态添加div

    问题 有没有遇到过这样的需求, 在页面上会有不定个input, 点击添加按钮就添加 ?...点击第一行的添加 点击的时候, 将div准备好, 添加到内容div中的第一个 点击每行的添加 将div添加到当前点击行后面一个 点击每行删除 删除当前div 实现 基本思路很简单, 只要在每个点击按钮上添加对应的点击事件...我在封装的时候喜欢先想用的时候怎么用, 然后根据这个思路来想应该怎么封装, 思考如下 因为添加的div肯定是不同的, 是需要传的参数, 但是如果直接传div字符串也太丑了, 应该在页面直接写HTML,...然后传id即可 添加成功后需要有个回调函数, 我得做些收尾的工作 最好有这两个参数就可以直接运行 开始码代码了: 在创建的时候接收参数, 大部分参数都有默认值, 也就是说, 按照默认值来看, 一个参数都不需要...this.num = 0; } // 向内容div的第一个添加 AddItem.prototype.addFistItem = function () { // 判断是否超出最大数量

    24.5K40

    Flutter - 利用贝塞尔曲线实现添加购物车效果

    剩下的还有高阶,就不多赘述了,可推断公式如下: ? ? 实现商品添加购物车效果 复习了一下贝塞尔曲线的原理之后,我们来看一下今天要实现的效果: ?...起点是我们 ListView 里面每一个 item 的 + 号,终点就是左下角的「购物车图标」。...我们回看刚才获取「购物车」位置的代码,其实也就是用 GlobalKey 来获取 context,用 context 来获取位置,那我们何不直接用一个带 context 的组件?...总结 这就是用 Flutter 实现添加购物车的所有内容,还是有一些细节在里面的。 代码已经提交到了 Github - 添加购物车Demo。[4] 如有缺陷,希望大家提出,共同学习!?...Vadaski - Flutter | 深入浅出Key: https://juejin.im/post/5ca2152f6fb9a05e1a7a9a26#heading-10 [4] Github - 添加购物车

    3.2K20

    商品添加到购物车动画getBoundingClientRect获取元素位置

    这也实现了内容区标题栏始终在顶部的效果。关于粘性定位更多的可以看这里 2. 按钮缓慢弹出 当我们点击添加按钮的时候其他的内容会缓慢弹出,这个是靠css的动画实现的。...我们先将个数减少按钮和被选中物品个数num的left设为48px,使其被隐藏。点击添加按钮时选择物品个数大于0则让left变为0达到一个缓慢弹出的动画效果。...因为如果用户连续点击添加可能会出现小球不够的情况,所以需要多个小球。 添加时将一个小球的位置设置为被点击元素的位置,且获取目的地位置(购物车位置),当小球抛出时使其运动方式按照贝塞尔曲线过渡。...,如果不恢复的话下次用户点击了小球就不够啊… 总结 以上是饿了么购物车模块主页面的几个主要技术点。

    1.7K20

    原生js添加元素

    大家好,又见面了,我是你们的朋友全栈君。...今天做页面使用的mui,因为使用mui情况下无法使用jquery,于是在ajax请求完毕添加元素的时候发现自己竟然对原生js添加元素的方法有点模糊了,真是越活越倒退了,赶紧整理一波。...首先最简单的innerHTML,这个不想多说,入门新手喜欢这么用,但他的缺点也很明显:不管你渲染部分还是全部,始终需要替换原先所有的子元素,也就是需要重复渲染,会增加浏览器压力。...接下来就是正题了,js推荐是这样进行元素添加: 1.创建游离元素节点:let div=document.createElement(“div”); 2.给创建元素添加属性:div.setAttribute...(“class”,”className”);注意setAttribute一次只能设置一条属性 3.创建文本节点:let textNode=document.createTextNode(“需要添加的文本

    8.9K20

    js给数组添加数据的方式js 向数组对象中添加属性和属性值

    大家好,又见面了,我是你们的朋友全栈君。...参考:https://www.cnblogs.com/ayaa/p/14732349.html js给数组添加数据的方式有以下几种: 直接利用数组下标赋值来增加(数组的下标起始值是0) 例,先存在一个有...用 数组名.splice(开始插入的下标数,0,需要插入的参数1,需要插入的参数2,需要插入的参数3……)来增加数组数据 let arr=[1,2,3]; //splice(第一个必需参数:该参数是开始插入...\删除的数组元素的下标,第二个为可选参数:规定应该删除多少元素,如果未规定此参数,则删除从 第一个参数 开始到原数组结尾的所有元素,第三个参数为可选参数:要添加到数组的新元素) let result=arr.splice...(3,0,7,8,9) console.log(arr);  此时的输出结果是[ 1, 2, 3, 7, 8, 9 ]; 因为举例是从第3个下标开始,所以是直接在数组的最后开始增加数组内容; js 向数组对象中添加属性和属性值

    23.5K20
    领券