如何在Google Tag Manager自定义JS变量中返回指定格式的列表
修正GTM自定义JS变量以生成正确格式的列表对象
原代码直接拼接字符串的方式无法处理多元素的逗号分隔值,还会产生多余逗号,且返回的字符串类型也不符合标签字段对对象的需求。以下是修正后的代码:
function() { // 获取目标隐藏输入框元素 var el = {{st-find-closest}}({{Click Element}}, '#st-signup-list'); if (!el || !el.value) return {}; // 处理元素不存在或无值的异常情况 // 将逗号分隔的值拆分为数组,同时去除每个项的前后空格 var listItems = el.value.split(',').map(item => item.trim()); // 构建目标格式的对象 var listsObj = {}; listItems.forEach(item => { if (item) { // 跳过空项(比如连续逗号产生的空内容) listsObj[item] = 1; } }); return listsObj; }
关键修改说明:
- 分割与清洗:用
split(',')拆分输入值为数组,搭配trim()去除每个列表项的前后空格,避免因空格导致键名无效。 - 直接返回对象:不再手动拼接JSON字符串,而是直接创建JS对象,GTM标签的
lists字段可直接接收该对象,彻底避免格式错误。 - 异常防护:增加元素、值、空项的判断逻辑,防止变量返回错误或无效内容。
测试时,若输入框值为listname1, listname2,变量会返回{"listname1":1,"listname2":1}格式的对象,完全符合目标要求。
内容的提问来源于stack exchange,提问作者cjochum
相关产品推荐
相关产品推荐

