使用 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>
我的意图是,在触发时:
- 收集字段中的所有表单值
- 迭代项目数组并获取字段的名称和值
- 将名称和值作为键值对触发
- 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' />
我正在尝试使用 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>
我的意图是,在触发时:
- 收集字段中的所有表单值
- 迭代项目数组并获取字段的名称和值
- 将名称和值作为键值对触发
- 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' />