首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GTM根据现有变量创建新变量(WPForms跟踪)

GTM根据现有变量创建新变量(WPForms跟踪)
EN

Stack Overflow用户
提问于 2020-10-08 23:12:25
回答 1查看 50关注 0票数 0

我使用GTM跟踪WPForms表单的值,并使用以下代码从多选下拉列表中获取所选值:

代码语言:javascript
复制
  function() {
  var selectList = {{wpFormElement}}.querySelector('#wpforms-1397-field_16');
  var options = selectList ? selectList.options : [];
  var vals = [];
  var i, len;
  for (i = 0, len = options.length; i < len; i++) {
    if (options[i].selected) {
      vals.push(options[i].value);
    }
  }
  return vals.length ? vals.join(' ') : undefined;
}

输出是product-id的:

代码语言:javascript
复制
'2705 1446 2772'

我想提交的产品与实名分析,而不是id。我如何获得一个新的变量(每个),其中的真实产品名称取决于产品的id?

var1: 2705 =产品1

var2: 1446 =产品2

var3: 2772 =产品3

thx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-09 07:25:26

听起来您需要一个产品名称数组。从一个值转到另一个值的最简单方法是使用对象,如下例中的productIdNameMap变量。修改后的代码将返回一个产品名称列表,因此如果需要,您可以使用for循环对每个产品名称执行某些操作。

代码语言:javascript
复制
(function() {
  var selectList = document.querySelector('#wpforms-1397-field_16');
  var options = selectList ? selectList.options : [];
  var productIdNameMap = {
    2705: 'product 1',
    1446: 'product 2',
    2772: 'product 3',
    2020: 'product 4'
  };

  var vals = [];
  var i, len, productId;
  for (i = 0, len = options.length; i < len; i++) {
    if (options[i].selected) {
      productId = options[i].value
      vals.push(productIdNameMap[productId]);
    }
  }

  console.log(vals);
  return vals;
})();
代码语言:javascript
复制
<select multiple id="wpforms-1397-field_16">
  <option selected>2705</option>
  <option selected>1446</option>
  <option selected>2772</option>
  <option>2020</option>
</select>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64265544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档