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

如何配合Gravity Form使用jQuery调用WooCommerce商品基础价格

错误原因

  • 变量类型错误:BasePrice 直接从DOM取文本内容,默认带货币符号(比如€、$、¥)和千位分隔符,是字符串类型,直接做乘法运算会得到NaN,无法正常计算价格。
  • 执行时机错误:给#input_2_9赋值的代码写在radio的change事件外,页面加载完成后就会立刻执行,此时用户还没选择radio选项,FinalPrice是未定义状态,赋值会失败。只有用户触发radio变更后计算出的FinalPrice才是有效值,赋值逻辑要放到change事件内部。
  • 选择器语法错误:代码里的"是HTML转义后的双引号实体,放到JS里会导致选择器识别失败,要替换为正常的双引号或单引号。

修正后代码(精简优化版)

$(function() {
  // 提取基础价格:只保留数字和小数点,转成浮点型
  const getBasePrice = () => parseFloat($('.woocommerce-variation-price .amount').text().replace(/[^0-9.]/g, ''));
  // 用对象映射替代switch,更易维护,加新规则只需要加键值对
  const priceMultiplier = {
    'Enkele': 2,
    'Dubble': 5,
    'Wave': 6
  };

  // radio变更事件
  $('.Select_plooi input[type="radio"]').on('change', function() {
    const selectedPlooi = $('input[name="input_4"]:checked').val();
    // 取不到对应倍率就用1倍基础价当默认值,避免NaN
    const finalPrice = (getBasePrice() * (priceMultiplier[selectedPlooi] || 1)).toFixed(2);
    $('#input_2_9').val(finalPrice);
  });
});

优化点说明

  • 把基础价格提取封装成独立函数,若后续商品变种切换后价格更新,也能实时拿到最新的基础价
  • 用对象映射替换switch语句,代码更精简,后续新增选项的价格规则不需要修改逻辑,直接加对象键值对即可
  • 加了默认倍率兜底,就算用户选中未定义的选项也不会出现NaN的异常值
  • 移除了全局变量FinalPrice和BasePrice,避免变量污染

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:45:01