By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,287 Members | 1,668 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,287 IT Pros & Developers. It's quick & easy.

Question: probably basic one

P: n/a
Simple overview:
I want to call a function in a javascript duntion where the name of the
called function is an argument value passed into the javascript function.

Here is what I want:

On the html pages:
page1: onclick="A('a', 'C')"

In the library:
function A(x, B) { y=...do stuff...; B(y);}

function C(x) {...}
Currently, I have A call a function D which has a switch statement to
call the proper C function. How can I have A call C directly using the
passed in name of C?
Aug 27 '08 #1
Share this Question
Share on Google+
6 Replies


P: n/a
sheldonlg wrote:
Simple overview:
I want to call a function in a javascript duntion where the name of the
called function is an argument value passed into the javascript function.

Here is what I want:

On the html pages:
page1: onclick="A('a', 'C')"

In the library:
function A(x, B) { y=...do stuff...; B(y);}

function C(x) {...}
Currently, I have A call a function D which has a switch statement to
call the proper C function. How can I have A call C directly using the
passed in name of C?
Functions are first class objects so don't pass a function name in, pass
the function itself in e.g.
<div onclick="A('a', C);">
then you can simply use
function A(x, F) { y = ...; F(y); }

--

Martin Honnen
http://JavaScript.FAQTs.com/
Aug 27 '08 #2

P: n/a
Martin Honnen wrote:
sheldonlg wrote:
>Simple overview:
I want to call a function in a javascript duntion where the name of
the called function is an argument value passed into the javascript
function.

Here is what I want:

On the html pages:
page1: onclick="A('a', 'C')"

In the library:
function A(x, B) { y=...do stuff...; B(y);}

function C(x) {...}
Currently, I have A call a function D which has a switch statement to
call the proper C function. How can I have A call C directly using
the passed in name of C?

Functions are first class objects so don't pass a function name in, pass
the function itself in e.g.
<div onclick="A('a', C);">
then you can simply use
function A(x, F) { y = ...; F(y); }
You mean simply leave off the quotes in the initial call is all I have
to do?
Aug 27 '08 #3

P: n/a
sheldonlg wrote:
You mean simply leave off the quotes in the initial call is all I have
to do?
Yes, you can do that to pass the function as an argument to the other
function.
--

Martin Honnen
http://JavaScript.FAQTs.com/
Aug 27 '08 #4

P: n/a
In comp.lang.javascript message <48***********************@newsspool2.ar
cor-online.net>, Wed, 27 Aug 2008 17:29:13, Martin Honnen
<ma*******@yahoo.deposted:
>sheldonlg wrote:
>You mean simply leave off the quotes in the initial call is all I
have to do?

Yes, you can do that to pass the function as an argument to the other
function.
For those who really do want to pass in the name of the function as a
string (as originally asked), the notation shown by

window["LZ"](5)

is available; for me, that returns '05'. No doubt someone will comment
if that method is not always available.

If the function is frequently needed, consider :

Fn = window["LZ"]
Fn(5) + Fn(6) // gives '0506'

If, having received a function itself, one wants the name. one can
generally get it by a RegExp match on Fn.toString() ; js-nclds.htm .

It's a good idea to read the newsgroup c.l.j and its FAQ. See below.

--
(c) John Stockton, nr London UK. ?@merlyn.demon.co.uk IE7 FF2 Op9 Sf3
news:comp.lang.javascript FAQ <URL:http://www.jibbering.com/faq/index.html>.
<URL:http://www.merlyn.demon.co.uk/js-index.htmjscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/TP/BP/Delphi/jscr/&c, FAQ items, links.
Aug 27 '08 #5

P: n/a
Dr J R Stockton wrote:
In comp.lang.javascript message <48***********************@newsspool2.ar
cor-online.net>, Wed, 27 Aug 2008 17:29:13, Martin Honnen
<ma*******@yahoo.deposted:
>sheldonlg wrote:
>>You mean simply leave off the quotes in the initial call is all I
have to do?
Yes, you can do that to pass the function as an argument to the other
function.

For those who really do want to pass in the name of the function as a
string (as originally asked), the notation shown by

window["LZ"](5)

is available; for me, that returns '05'. No doubt someone will comment
if that method is not always available.

If the function is frequently needed, consider :

Fn = window["LZ"]
Fn(5) + Fn(6) // gives '0506'

If, having received a function itself, one wants the name. one can
generally get it by a RegExp match on Fn.toString() ; js-nclds.htm .

It's a good idea to read the newsgroup c.l.j and its FAQ. See below.
I only asked about the name because that is what I thought I had to do.
However, what I want is more like;

onclick="getValues(p1, p2, postGetValues)";

function getValues(x, y, z) {
....gets w...
otherFunction(w, z);
}

funtion otherFunction(a, z) {
....gets b....
z(b);
}

postGetValues(x) {
...process x which gets its value from otherFunction...
}

As I understood mahotrash, this is what he meant and this is what I
wanted. The idea being that all I need write is the initially invoked
function (getValues) and the post-processing function (postGetValues),
eliminating the need for altering a third middle function which has a
switch statement to navigate properly.
Aug 28 '08 #6

P: n/a
Dr J R Stockton wrote on 27 aug 2008 in comp.lang.javascript:
For those who really do want to pass in the name of the function as a
string (as originally asked), the notation shown by

window["LZ"](5)
.... gives interesting be it not very useful possibilities
for batchwize assigning of functions:

<script type='text/javascript'>

var weekDay = 'x/Su/Mo/Tu/We/Th/Fr/Sa'.split('/');

for(var i=1;i<8;i++) {
window[weekDay[i]] = function(){return 'It's raining again'};
};

alert (Th());

</script>

--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)
Aug 28 '08 #7

This discussion thread is closed

Replies have been disabled for this discussion.