javascript - addEventListener 没有附加我的函数?

标签 javascript

下面是我的脚本。当我在控制台打开的情况下单击相关元素之一时,我没有看到我的数据传递到数组“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/

相关文章:

JavaScript RegExp 匹配(部分)小时

javascript - 来自 document.getElementsByClassName 的元素 ID

php - 如何将 facebook 登录响应从 javascript 传递到 php 页面?

javascript - 属性 <position> 的值无效

javascript - Flask 如何返回成功的请求?

javascript - 什么 Javascript 事件会导致具有列表属性的输入呈现其列表?

javascript - Jquery slideToggle 弄乱了 flex 对齐,直到它完成

javascript - Blob URL 不适用于 Android 浏览器

javascript - 没有 jquery ui 的脚本

javascript - setTimeout 无法访问变量