在我的页脚中,我有一个div部分结构如下:
<div id="text_icl-7" class="widget widget_text_icl">
<div class="textwidget">
<p style="text align:justify;">
<img src="image.jpg" alt="YC logo">
Some text
</p>
</div>
</div>
我希望将文本值捕获到变量中,所以我在gtm中写这个:
function () {
var desc = document.getElementById("text_icl-7").childNodes[1];
var p = desc.childNodes[1].childNodes[2];
return p;
}
问题是,调试页面时,变量的值是未定义的。 我在另一个自定义页面中尝试脚本并且它可以工作,我用这种方式编写脚本:
(function(d) {
var desc = document.getElementById("text_icl-7").childNodes[1];
var p = desc.childNodes[1].childNodes[2];
console.log(p)
})(document)
在控制台我获取文本但不在标签管理器中,为什么?感谢
答案 0 :(得分:0)
我无法调试您获取未定义值的原因,但我怀疑自定义JavaScript变量不是您在此实例中所需的。
您可以使用Google跟踪代码管理器的“DOM变量”返回DOM元素中包含的文本。配置变量以使用CSS选择器选择与load data local infile "/home/marcio/Área de
Trabalho/SQL_Temporario/Insetos/Blastn_1"
into table Blastn_1;
匹配的元素。将'attribute'字段保留为空将默认返回元素包含的文本。
答案 1 :(得分:0)
我得到了gtm论坛的帮助。 相关脚本是:
function() {
var el = document.querySelector('#text_icl-7');
return el && (el.textContent || el.innerText);
}
现在它可以工作,也许dom变量的解决方案也可行,谢谢
答案 2 :(得分:0)
很抱歉对此做出回应,但这是我的解决方案,您需要在脚本的开头定义变量,并在结尾处返回。下面的示例。
这不起作用:
function(){
document.querySelectorAll('.some-class').forEach(function(item){
var displayStyle = item.style.display;
if (displayStyle === 'block'){
return item.getAttribute('id');
}
})
}
但这可行:
function(){
var result = '';
document.querySelectorAll('.some-class').forEach(function(item){
var displayStyle = item.style.display;
if (displayStyle === 'block'){
result = item.getAttribute('id');
}
})
return result;
}