You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为JavaScript添加事件/触发器?实时统计购物车数量求助

实现拖拽添加购物车后的实时数量统计

嘿,我来帮你解决这个问题!你遇到的核心问题是原来的统计代码只在页面加载时执行了一次,所以后续按钮的类变化时,没法自动更新购物车的数量。咱们可以通过把统计逻辑封装成一个可重复调用的函数,在每次商品添加完成时手动触发它,就能实现实时响应啦。

步骤1:封装更新购物车数量的函数

先把统计并更新购物车显示的代码抽成一个独立函数,这样我们可以在需要的时候随时调用它:

function updateCartCount() {
  // 获取所有带有"ui-state-highlight"类的元素数量
  var cartItems = document.getElementsByClassName('ui-state-highlight').length;
  // 找到购物车数量显示的元素
  var cart = document.getElementById('cart');
  // 更新显示内容
  cart.textContent = cartItems + " items";
}

步骤2:页面初始化时先执行一次

页面加载完成后,先调用这个函数初始化购物车的初始数量(避免一开始显示0或者空白):

$(function() {
  // 初始化购物车数量
  updateCartCount();
  
  // 你的拖拽交互代码...
});

步骤3:在拖拽完成的事件中调用函数

修改你现有的droppable的drop事件处理逻辑,在添加完类和修改按钮文字后,调用我们的更新函数,这样每次拖拽添加商品后都会实时更新数量:

$("#droppable1").droppable({
  classes: {
    "ui-droppable-active": "ui-state-default"
  },
  drop: function(event, ui) {
    $(this)
      .addClass("ui-state-highlight")
      .find("button.b1")
      .html("Added!");
    
    // 每次商品添加完成后,更新购物车数量
    updateCartCount();
  }
});

完整的整合代码

把所有部分整合起来,最终的代码应该是这样的:

function updateCartCount() {
  var cartItems = document.getElementsByClassName('ui-state-highlight').length;
  var cart = document.getElementById('cart');
  cart.textContent = cartItems + " items";
}

$(function() {
  // 初始化购物车数量
  updateCartCount();

  // 初始化拖拽元素
  $("#draggable1").draggable({ revert: "valid" });
  $("#draggable2").draggable({ revert: "valid" });
  $("#draggable3").draggable({ revert: "valid" });
  $("#draggable4").draggable({ revert: "valid" });

  // 初始化放置区域
  $("#droppable1").droppable({
    classes: {
      "ui-droppable-active": "ui-state-default"
    },
    drop: function(event, ui) {
      $(this)
        .addClass("ui-state-highlight")
        .find("button.b1")
        .html("Added!");
      
      // 更新购物车数量
      updateCartCount();
    }
  });
});

这样修改后,每次你把商品拖拽到「Add to cart」按钮并成功添加时,购物车的数量就会自动更新啦。如果之后你需要实现移除商品的功能,只需要在移除商品、修改按钮类之后,同样调用updateCartCount()函数,就能保持数量的实时准确。

内容的提问来源于stack exchange,提问作者holycanoly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:27:29