在带有 querySelectors 的 Google 跟踪代码管理器中使用 IF 条件
Using IF conditional in Google Tag Manager with querySelectors
问题
继续获取 'undefined' 作为 returned google 标签管理器变量。
描述
我正在尝试编写一个自定义 javascript 变量来提取 'data-name'
IF 'data-form-title'
returns ""
我有一个要标记的网站,需要获取表单名称。问题出现了,一些表单的名称返回为“”,所以我想使用 IF/Then 逻辑在第一个返回为空时选择另一个属性。
具有正确表单标题的表单https://www.mcgeetoyotaofclaremont.com/popup-availability
表单标题为空 "" ('text yourself a link') https://www.mcgeetoyotaofclaremont.com/vehicle-details/new-2020-toyota-yaris-hatchback-le-claremont-nh-id-33375400#
我试过的
我已经测试了两个 querySelectors,它们都可以独立工作。当我尝试使 运行 成为问题的 IF 条件时。
我也试过 var answer = 'Unknown'
然后根据条件用 formtitle
或 datatitle
替换变量,这样脚本只有 1 return在函数中。
对我来说这似乎很简单,当我 cross-check 其他示例(例如从函数中取出名称)时,它似乎应该可以正常工作。
当前代码
function() {
var formtitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-form-title'].nodeValue;
var datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;
if (formtitle != ""){
return formtitle;
} else {
return datatitle;
}
}
当我尝试 运行 您表单上的当前代码时,出现错误:Uncaught TypeError: Cannot read property 'nodeValue' of undefined
。此错误会使您的 GTM 函数 return 每次都未定义。
问题似乎是这行代码:
var datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;
没有 data-name
属性。所以你要么需要确保你正在尝试访问正确的属性,要么你可以像这样简单地将你的变量包围在 try-catch 块中:
function() {
var formtitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-form-title'].nodeValue;
var datatitle = '';
try{
datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;
}catch(err){}
if (formtitle != ""){
return formtitle;
} else {
return datatitle;
}
}
问题
继续获取 'undefined' 作为 returned google 标签管理器变量。
描述
我正在尝试编写一个自定义 javascript 变量来提取 'data-name'
IF 'data-form-title'
returns ""
我有一个要标记的网站,需要获取表单名称。问题出现了,一些表单的名称返回为“”,所以我想使用 IF/Then 逻辑在第一个返回为空时选择另一个属性。
具有正确表单标题的表单https://www.mcgeetoyotaofclaremont.com/popup-availability
表单标题为空 "" ('text yourself a link') https://www.mcgeetoyotaofclaremont.com/vehicle-details/new-2020-toyota-yaris-hatchback-le-claremont-nh-id-33375400#
我试过的
我已经测试了两个 querySelectors,它们都可以独立工作。当我尝试使 运行 成为问题的 IF 条件时。
我也试过 var answer = 'Unknown'
然后根据条件用 formtitle
或 datatitle
替换变量,这样脚本只有 1 return在函数中。
对我来说这似乎很简单,当我 cross-check 其他示例(例如从函数中取出名称)时,它似乎应该可以正常工作。
当前代码
function() {
var formtitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-form-title'].nodeValue;
var datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;
if (formtitle != ""){
return formtitle;
} else {
return datatitle;
}
}
当我尝试 运行 您表单上的当前代码时,出现错误:Uncaught TypeError: Cannot read property 'nodeValue' of undefined
。此错误会使您的 GTM 函数 return 每次都未定义。
问题似乎是这行代码:
var datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;
没有 data-name
属性。所以你要么需要确保你正在尝试访问正确的属性,要么你可以像这样简单地将你的变量包围在 try-catch 块中:
function() {
var formtitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-form-title'].nodeValue;
var datatitle = '';
try{
datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;
}catch(err){}
if (formtitle != ""){
return formtitle;
} else {
return datatitle;
}
}