Question: probably basic one

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • sheldonlg

    Question: probably basic one

    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?
  • Martin Honnen

    #2
    Re: Question: probably basic one

    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

    Comment

    • sheldonlg

      #3
      Re: Question: probably basic one

      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?

      Comment

      • Martin Honnen

        #4
        Re: Question: probably basic one

        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

        Comment

        • Dr J R Stockton

          #5
          Re: Question: probably basic one

          In comp.lang.javas cript message <48b572c9$0$129 53$9b4e6d93@new sspool2.ar
          cor-online.net>, Wed, 27 Aug 2008 17:29:13, Martin Honnen
          <mahotrash@yaho o.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.c om/faq/index.html>.
          <URL:http://www.merlyn.demo n.co.uk/js-index.htmjscr maths, dates, sources.
          <URL:http://www.merlyn.demo n.co.uk/TP/BP/Delphi/jscr/&c, FAQ items, links.

          Comment

          • sheldonlg

            #6
            Re: Question: probably basic one

            Dr J R Stockton wrote:
            In comp.lang.javas cript message <48b572c9$0$129 53$9b4e6d93@new sspool2.ar
            cor-online.net>, Wed, 27 Aug 2008 17:29:13, Martin Honnen
            <mahotrash@yaho o.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="getVal ues(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.

            Comment

            • Evertjan.

              #7
              Re: Question: probably basic one

              Dr J R Stockton wrote on 27 aug 2008 in comp.lang.javas cript:
              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(){retu rn 'It's raining again'};
              };

              alert (Th());

              </script>

              --
              Evertjan.
              The Netherlands.
              (Please change the x'es to dots in my emailaddress)

              Comment

              Working...