addEventListener calls the function without me even asking it to

addeventlistener, javascript

Solution

Quoting Ian's answer:

Since the second parameter expects a function reference, you need to provide one. With your problematic code, you're immediately calling the function and passing its result (which is `undefined`...because all the function does is `alert` and doesn't return anything). Either call the function in an anonymous function (like your first example) or alter the function to return a function.

function message_me(m_text){
    alert(m_text)
} 

second.addEventListener('click', 
    function() {
        message_me('shazam');
    }
);

Here's an updated fiddle.

Problem

So we have a page: ``` <span id='container'> <a href='#' id='first'>First Link</a> <a href='#' id='second'>Second Link</a> </span> ``` And want to add some click events: ``` first.addEventListener('click', function(){alert('sup!');}) ``` Works like a charm! However, when you make the second argument an external function: ``` function message_me(m_text){ alert(m_text) } second.addEventListener('click', message_me('shazam')) ``` It calls the function immediately. How can I stop this? So annoying! Here's a live demo: http://jsfiddle.net/ey7pB/1/

Original source

Related problems