function addValidEvent(item,event,func)
{
if (item.addEventListener)
{
item.addEventListener(event, func, false);
}
else
if (item.attachEvent)
{
item.attachEvent("on" + event, func);
} else {
//todo
}
}
I call it like
addValidEvent(element, "mouseover", inRadio(element));
inRadio this is other function, I need to register this with out call a inRadio in addValidEvent call.
How to correct pass the function like param ?
-
possible duplicate of javascript parameter passing in dynamic action handlerFelix Kling– Felix Kling2012年02月14日 15:31:45 +00:00Commented Feb 14, 2012 at 15:31
4 Answers 4
pass it as function. Now you are calling method inRadio. Do it like this
addValidEvent(element, "mouseover", function() {inRadio(element); });
Comments
The context on which your function is called is the element itself, so you could pass the function reference(name) as the event handler:
addValidEvent(element, "mouseover", inRadio);
or you can wrap your function call in an anonymous function(this might come in handy when you want to have more control over the callback) :
addValidEvent(element, "mouseover", function(){inRadio(element);});
Comments
In your code you are actually calling the function and the return value of that call is being passed as thrid argumnent to addValidEvent method.
Try this.
addValidEvent(element, "mouseover", inRadio);
As a side note: Since jQuery is tagged to this question I would suggest you to use jQuery for this which is so simple.
$(element).mouseover(inRadio);
Comments
var a = function() {
// code here
}
Then do what you need to with 'a'
But I prefer the previous answers :)
3 Comments
a integrates with the existing code.