Ganesh
Ganesh

Reputation: 515

return onclick value to a JavaScript function

I have created an anchor with an onclick event which calls a JavaScript function. The JavaScript function returns some value. I want to use that value in another JS function.

e.g loading() will return some value which will get passed to another js function. How do I capture and store the return value, and then pass this value to that function?

Upvotes: 3

Views: 30601

Answers (4)

Chris Gessler
Chris Gessler

Reputation: 23113

Can you simply call the outer function with the inner function?

function outerFunc(a)
{
  alert(a);
}

function innerFunc()
{
  return 'test';
}

onclick="outerFunc(innerFunc());"

Or, if you need to use the return value in another event, set a variable.

var retval;
function outerFunc()
{
  if(retval) alert(retval);
}

function innerFunc()
{
  retval = 'test';
  return retval;
}

onclick="return innerFunc();"

In someother onclick event

onclick="return outerFunc();"

Upvotes: 5

Phrogz
Phrogz

Reputation: 303198

You mentioned in a comment you want to save it for later. You can use the fact that JavaScript functions are closures and thus have access to local variables declared in the same scope:

var clickedValue; // No need to set a value here, just declare is

myAnchor.addEventListener('click',function(evt){
  // Call the other function, setting the 'this' scope to be the anchor
  // The scope of the variable set it the one above
  clickedValue = someFunction.call(myAnchor,evt);
},false);

/* later on… */

otherFunction(clickedValue);

Upvotes: 0

sakhunzai
sakhunzai

Reputation: 14470

a) Use a global variable e.g (also)

var passVar=null;

function A(){
  //set value
  passVar='hello';
}

function B(){
  //get value 
  alert(passVar);
}

b) if your function is on ANOTHER page which is consuming the stored value, you might be using setItem() ,getItem() and more advance features of browsers to use browser session storage mechanism

Upvotes: 0

Niet the Dark Absol
Niet the Dark Absol

Reputation: 324620

Something like this?

<a onClick="loading(myFunction());">

If myFunction() is your original onClick code, it will get passed to loading afterward.

Upvotes: -1

Related Questions