下面是我的脚本。当我在控制台打开的情况下单击相关元素之一时,我没有看到我的数据传递到数组“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>
最佳答案
您正在调用方法而不是分配它
转换此
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);
关于javascript - addEventListener 没有附加我的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685689/