HighDots Forums  

Question: probably basic one

Javascript JavaScript language (comp.lang.javascript)


Discuss Question: probably basic one in the Javascript forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
sheldonlg
 
Posts: n/a

Default Question: probably basic one - 08-27-2008 , 07:12 AM






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?

Reply With Quote
  #2  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Question: probably basic one - 08-27-2008 , 07:33 AM






sheldonlg wrote:
Quote:
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/


Reply With Quote
  #3  
Old   
sheldonlg
 
Posts: n/a

Default Re: Question: probably basic one - 08-27-2008 , 07:45 AM



Martin Honnen wrote:
Quote:
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?


Reply With Quote
  #4  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Question: probably basic one - 08-27-2008 , 11:29 AM



sheldonlg wrote:

Quote:
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/


Reply With Quote
  #5  
Old   
Dr J R Stockton
 
Posts: n/a

Default Re: Question: probably basic one - 08-27-2008 , 03:37 PM



In comp.lang.javascript message <48b572c9$0$12953$9b4e6d93 (AT) newsspool2 (DOT) ar
cor-online.net>, Wed, 27 Aug 2008 17:29:13, Martin Honnen
<mahotrash (AT) yahoo (DOT) de> posted:
Quote:
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.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.


Reply With Quote
  #6  
Old   
sheldonlg
 
Posts: n/a

Default Re: Question: probably basic one - 08-27-2008 , 08:29 PM



Dr J R Stockton wrote:
Quote:
In comp.lang.javascript message <48b572c9$0$12953$9b4e6d93 (AT) newsspool2 (DOT) ar
cor-online.net>, Wed, 27 Aug 2008 17:29:13, Martin Honnen
mahotrash (AT) yahoo (DOT) de> posted:
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.


Reply With Quote
  #7  
Old   
Evertjan.
 
Posts: n/a

Default Re: Question: probably basic one - 08-28-2008 , 04:09 AM



Dr J R Stockton wrote on 27 aug 2008 in comp.lang.javascript:

Quote:
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)


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.