Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why am I getting TypeError: obj.addEventListener is not a function?

Tags:

Here's my code:

function addEvent( obj, type, fn ) {   if ( obj.attachEvent ) {     obj['e'+type+fn] = fn;     obj[type+fn] = function(){obj['e'+type+fn]( window.event );}     obj.attachEvent( 'on'+type, obj[type+fn] );   } else     obj.addEventListener(type, fn, false); }  function alertWinner(){     alert("You may be a winner!"); }  function showWinner (){     var aTag = document.getElementsByTagName("a");     addEvent(aTag, 'click', alertWinner); }  showWinner(); 

Basically, I'm working in the firebug console and trying to get an alert to pop up when any a tag is clicked.

I can't see the problem that results in this not working and giving me the error stated in my questions title (viewed in firebug). Anybody?

like image 992
max7 Avatar asked Mar 18 '13 19:03

max7


People also ask

Why is my event listener not working?

If your event listener not working is dependent on some logic, whether it's about which element it'll listen on or if it's registered at all, the first step is to check that the listener is indeed added to the element. Using a breakpoint in the developer tools , a logpoint or console.

What does addEventListener function do?

The addEventListener() method allows you to add event listeners on any HTML DOM object such as HTML elements, the HTML document, the window object, or other objects that support events, like the xmlHttpRequest object.

What is type of addEventListener?

Here are some of the most common event types and event names: Mouse Events: click, dblclick, mousedown, mouseup, contextmenu, mouseout, mousewheel, mouseovermouseoverIn computing, a mouseover , mouse hover or hover box is a graphical control element that is activated when the user moves or hovers the pointer over a trigger area, usually with a mouse, but also possible with a digital pen. Mouseover control elements are common in web browsers.https://en.wikipedia.org › wiki › MouseoverMouseover - Wikipedia. Touch Events: touchstart, touchend, touchmove, touchcancel. Keyboard Events: keydown, keyup, keypress.


1 Answers

document.getElementsByTagName returns a NodeList of DOM elements. Each element has an addEventListener function, but the array doesn't have one.

Loop over it:

function showWinner (){     var aTags = document.getElementsByTagName("a");     for (var i=0;i<aTags.length;i++){         addEvent(aTags[i], 'click', alertWinner);     } } 
like image 177
Matt Zeunert Avatar answered Oct 05 '22 23:10

Matt Zeunert