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

根据下拉选择器选中option的data-id动态修改按钮对应属性的实现方案

实现方案

直接使用原生JavaScript即可实现需求,代码如下:

// 等待DOM加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
  // 获取下拉选择器元素
  const productSelector = document.getElementById('product-selector');
  // 获取加入心愿单按钮元素
  const wishlistBtn = document.querySelector('.tinvwl_add_to_wishlist_button');

  // 定义更新按钮属性的函数
  function updateWishlistBtnAttr() {
    // 获取当前选中的option
    const selectedOption = productSelector.options[productSelector.selectedIndex];
    // 获取选中option的data-id值
    const selectedId = selectedOption.dataset.id;
    // 更新按钮的两个自定义属性
    wishlistBtn.dataset.tinvWlProductvariation = selectedId;
    wishlistBtn.dataset.tinvWlProductvariations = `[${selectedId}]`;
  }

  // 页面加载完成后先执行一次,保证初始状态和默认选中项匹配
  updateWishlistBtnAttr();
  // 给下拉框绑定change事件,选择变化时自动更新属性
  productSelector.addEventListener('change', updateWishlistBtnAttr);
});

代码说明

  • 所有逻辑在DOM完全加载后执行,避免出现找不到对应元素的报错
  • 主动在初始化阶段执行一次属性更新逻辑,保证按钮初始属性和下拉框默认选中项一致
  • 直接操作元素的dataset对象修改自定义data-*属性,无需手动调用setAttribute方法,写法更简洁

如果你的项目已经引入了jQuery,也可以使用以下代码实现:

$(document).ready(function() {
  const $productSelector = $('#product-selector');
  const $wishlistBtn = $('.tinvwl_add_to_wishlist_button');

  function updateAttr() {
    const selectedId = $productSelector.find('option:selected').data('id');
    $wishlistBtn.attr('data-tinv-wl-productvariation', selectedId);
    $wishlistBtn.attr('data-tinv-wl-productvariations', `[${selectedId}]`);
  }

  updateAttr();
  $productSelector.on('change', updateAttr);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:36:03