Reputation: 4766
Is there a way to dynamically change what parameters are passed to a javascript function from an html element? For instance, say I have the following:
<a id="myElement" href="javascript:myFunction('myParam');">Click me!</a>
How can I change 'myParam' to another parameter, say 'myParam2'? An answer using either javascript or jquery is fine with me. For simplicity's sake, feel free to suppose I can find this element by document.getElementById('myElement') or some other means.
Upvotes: 2
Views: 1855
Reputation: 24526
To accomplish what you want you can do something like this
var ChangeParam = function(el,newParam) {
//make sure things aren't broken:
if(typeof el !== 'undefined' && el.href && typeof newParam !== 'undefined') {
var parta = el.href.split('(')[0] + '('; //get the stuff before the param
var partb = ')' + el.href.split(')')[1]; //get the stuff after the param
el.href = parta + '"' + newParam + '"' + partb; //put it all together
} else { return false; }
}
ChangeParam(document.getElementById('myElement'),'meow');
Edit: I made it a pretty function, hooray!
Upvotes: 3
Reputation: 772
Should be able to use this as well:
document.getElementById('myElement').href = "javascript:myFunction('myParam2');"
Cheers, LC
Upvotes: 1
Reputation: 163234
What I would do instead is bind a click handler and use this
to figure out which was clicked.
$('#myElement').click(function () {
console.log($(this).text()); // Should dump "Click me!" to the console.
});
You could then add attributes to your links, such as data-someParam="my value"
and access them with .attr()
.
Upvotes: 7