<a href="" id="someId" onclick="SomeMethod(self);"></a>
Where SomeMethod could have:
function SomeMethod(item)
{
item.setAttribute('name', item.id);
}
Instead of:
function SomeMethod(itemId)
{
var someItem;
someItem = document.getElementById(itemId);
someItem .setAttribute('name', someItem .id);
}
Silly example, but the idea is not to send in the id itself, but the actual control calling the method. I swear this can be done but have had no luck searching... partially because I'm not even sure what to search on.
I thought it was self, but self doesn't seem to be what I want when the script I have runs.
I tend to use this approach in all function calls from HTML attributes:-
Then in the javascript do:-
This has a distinct advantage when you may also assign directly to event handler properties in Javascript code:-
If SomeMethod took the context element as a parameter it would very awkward to set up:-
Worse yet this would be memory leaking closure.
At this point:
SomeMethod(this)
-this
returns window object so do not use it. The right way to usethis
keyword is making it context relevant, so useSomeMethod.call(this)
.Use the
this
Keyword.You actually don't need to pass this as an argument to your function, because you've got a click event object that you can access. So: