使用 Google 跟踪代码管理器将动态键值对推送到数据层时遇到问题

Having trouble pushing dynamic key-value pairs to the data layer using Google Tag Manager

我正在尝试使用 Google 跟踪代码管理器:

收集并触发表单字段作为数据层变量
<script>
  
  var fields = [];
  var fields = document.querySelectorAll("input");  
  
  var x = fields.forEach(function(field) {
    var obj = {};
    var a = field.getAttribute("name");
    var b = field.value;
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push({
      obj[a] = b
    });
  }); 
  
</script>

我的意图是,在触发时:

  1. 收集字段中的所有表单值
  2. 迭代项目数组并获取字段的名称和值
  3. 将名称和值作为键值对触发
  4. Return 迭代下一项。

但是,我收到错误消息:

Error at line 12, character 10: Parse error. '}' expected

而且无论我做了什么更改,我似乎都无法正确解决问题。

push 函数中不能有 =。您可以稍微更改代码。 像obj[a] = b一样在push之前做赋值,然后在每次迭代时push dataLayer中的object。


下面的工作代码逻辑

var fields = [];
var fields = document.querySelectorAll("input");

var x = fields.forEach(function(field) {
  var obj = {};
  var a = field.getAttribute("name");
  var b = field.value;
  obj[a] = b;
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push(obj);
});

console.log(dataLayer)
<input name='a' value='a' />
<input name='b' value='b' />
<input name='c' value='c' />