以下是我的脚本。当我在控制台打开的情况下单击其中一个元素时,我看不到我的数据已传入数组" dataLayer'。
是否与范围有关?为什么函数eventData()
不会在点击变量cta_btns中的任何元素时运行?
<script>
var cta_btns = [].slice.call(document.querySelectorAll("a[href*='pricing']"));
cta_btns.shift();
(cta_buttons是页面上的一系列链接)
for ( var i=0; i<cta_btns.length; i++ ) {
if (document.addEventListener) {
cta_btns[i].addEventListener('click', eventData(), false);
} else if (document.attachEvent) {
cta_btns[i].attachEvent('on' + 'click', eventData());
}
}
function eventData(e) {
dataLayer.push({
'event': 'home_cta',
'iteration': 'hold',
'gtm.element': e.target,
'gtm.elementClasses': e.target.className || '',
'gtm.elementId': e.target.id || '',
'gtm.elementTarget': e.target.target || '',
'gtm.elementUrl': e.target.href || e.target.action || '',
'gtm.originalEvent': e
});
}
</script>
答案 0 :(得分:2)
您正在调用方法而不是分配方法
转换此
cta_btns[i].addEventListener('click', eventData(), false);
到这个
cta_btns[i].addEventListener('click', eventData, false);
相同
cta_btns[i].attachEvent('on' + 'click', eventData());
到这个
cta_btns[i].attachEvent('on' + 'click', eventData);