Get id of clicked url

Discussion in 'Javascript' started by Chris, Aug 31, 2008.

  1. Chris

    Chris Guest

    I'm sure this is simple and involves 'this' but my javascript powers
    are not too hot.

    From the url below how do I pick up the url's id in the function
    taking into consideration this could be one of many urls?

    <a href="javascript:void(0)" onclick="foo()" id="bar">

    I thought this might have worked but it doesn't...

    foo {
    str = this.GetElementById
    }

    Cheers,

    Chris
    Chris, Aug 31, 2008
    #1
    1. Advertising

  2. Chris

    Chris Guest

    On 31 Aug, 15:44, "MikeB" <m.byerleyATVerizonDottieNettie> wrote:
    > "Chris" <> wrote in message
    >
    > news:...
    >
    > > I'm sure this is simple and involves 'this' but my javascript powers
    > > are not too hot.

    >
    > > From the url below how do I pick up the url's id in the function
    > > taking into consideration this could be one of many urls?

    >
    > > <a href="javascript:void(0)" onclick="foo()" id="bar">

    >
    > > I thought this might have worked but it doesn't...

    >
    > > foo {
    > > str = this.GetElementById
    > > }

    >
    > window.event.srcElement.id;
    >
    > > Cheers,

    >
    > > Chris

    >
    >


    Thanks Mike.

    Chris
    Chris, Aug 31, 2008
    #2
    1. Advertising

  3. Chris wrote:
    > On 31 Aug, 15:44, "MikeB" <m.byerleyATVerizonDottieNettie> wrote:
    >> "Chris" <> wrote in message:
    >>> I'm sure this is simple and involves 'this' but my javascript powers
    >>> are not too hot.
    >>> From the url below how do I pick up the url's id in the function
    >>> taking into consideration this could be one of many urls?
    >>> <a href="javascript:void(0)" onclick="foo()" id="bar">


    Don't. <http://jibbering.com/faq/#FAQ4_42>

    >>> I thought this might have worked but it doesn't...
    >>> foo {
    >>> str = this.GetElementById


    This cannot work. It is syntactically invalid (the identifier MUST be
    preceded by the `function' keyword, and followed by a list of named
    arguments, even if that is empty), pointless (`this' refers to the Global
    Object in a globally called method, not the object handling the event),
    error-prone (`str' was not declared a variable), and simply wrong even if
    the correct object was being referred to (ECMAScript implementations are
    case-sensitive, the method identifier is `getElementById', and it would not
    be called, but referenced, here because the argument list was missing.)

    >>> }

    >> window.event.srcElement.id;


    That is IE-proprietary, and therefore nonsense in this general context. The
    (so far) interoperable approach is the obvious one (which includes proper
    syntax):

    function foo(o)
    {
    var str = o.id;
    }

    <a href="..." onclick="foo(this)" id="bar">

    However, it is likely then that you don't need the ID anymore as you have
    the object element reference with `o' already.

    Please RTFFAQ and RTFM before you post here again.

    >> [...]

    >
    > Thanks Mike.


    My name is not Mike, but you are welcome, I think.


    PointedEars
    --
    Use any version of Microsoft Frontpage to create your site.
    (This won't prevent people from viewing your source, but no one
    will want to steal it.)
    -- from <http://www.vortex-webdesign.com/help/hidesource.htm>
    Thomas 'PointedEars' Lahn, Sep 1, 2008
    #3
  4. Chris

    Arun Guest

    On Aug 31, 3:44 pm, "MikeB" <m.byerleyATVerizonDottieNettie> wrote:
    > "Chris" <> wrote in message
    >
    > news:...
    >
    > > I'm sure this is simple and involves 'this' but my javascript powers
    > > are not too hot.

    >
    > > From the url below how do I pick up the url's id in the function
    > > taking into consideration this could be one of many urls?

    >
    > > <a href="javascript:void(0)" onclick="foo()" id="bar">

    >
    > > I thought this might have worked but it doesn't...

    >
    > > foo {
    > > str = this.GetElementById
    > > }

    >
    > window.event.srcElement.id;
    >
    > > Cheers,

    >
    > > Chris

    >
    >


    Remember, window.event only works on Internet Explorer versions 5.0
    onwards. What you need is a simple cross-browser solution like the
    following:

    function foo(e)
    {
    var sourceElm = (e.target) ? e.target : window.event.srcElement;
    alert(sourceElm.id);
    }

    ...where e is passed as an object of window.event in IE, but in
    Firefox, it is passed as an implicit event object. IE uses the
    window.event.srcElement routine to get to the calling object,
    but in EOMB (every other modern browser), e.target is used to
    retrieve the calling object.

    You will call the above method simply like this:

    <a id="bar" href="javascript:void(0);" onclick="foo(event)">Click
    me</a>

    Cheers,
    Arun
    Arun, Sep 1, 2008
    #4
  5. Chris

    RobG Guest

    On Sep 2, 1:05 am, Arun <> wrote:
    [...]
    > Remember, window.event only works on Internet Explorer versions 5.0
    > onwards. What you need is a simple cross-browser solution like the
    > following:
    >
    >  function foo(e)
    >  {
    >    var sourceElm = (e.target) ? e.target : window.event.srcElement;
    >    alert(sourceElm.id);
    >  }


    Given your code below, e is a reference to window.event in IE
    already. The usual pattern here is:

    function foo(e) {
    var e = e || window.event;
    var tgt = e.target || e.srcElement;

    /* do stuff with e and tgt */

    }

    Noting that tgt will be reference to the element that initiated the
    event, which is not necessarily the element that has the listener
    (consider a bubbling event from a span inside the A element).


    [...]

    > ..where e is passed as an object of window.event in IE, but in
    > Firefox, it is passed as an implicit event object. IE uses the
    > window.event.srcElement routine to get to the calling object,
    > but in EOMB (every other modern browser), e.target is used to
    > retrieve the calling object.
    >
    > You will call the above method simply like this:
    >
    >   <a id="bar" href="javascript:void(0);" onclick="foo(event)">Click
    >    me</a>


    Put something meaningful in the href attribute or replace the A
    element with something more appropriate (a button or styled span
    maybe).


    The onclick listener should return false if the link should not be
    followed:

    <a href="usefulLink.html" onclick="return foo(event);"> ... </a>

    and within foo:

    function foo(e) {
    if (...) {
    /* all OK, don't follow the link */
    return false;
    } else {
    ...
    }
    }


    The use of event as an argument to the call to foo means that both in
    common event models a reference to the event object will be passed to
    foo. It is the only way to get a reference to the event object from
    an inline listener in browsers that don't implement window.event.

    In any case, as suggested by Thomas, the simplest solution is to have
    the listener pass a reference to the element using the this keyword:

    <a ... onclick="return foo(this);"> ... </a>

    and:

    function foo(el) {
    /* el is a reference to the node that called foo */
    }

    So el will be a reference to the element that has the listener,
    regardless of the source or target element.


    --
    Rob
    RobG, Sep 2, 2008
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Jon paugh
    Replies:
    1
    Views:
    701
  2. moid
    Replies:
    0
    Views:
    303
  3. Replies:
    1
    Views:
    396
    Andrew Thompson
    Oct 28, 2006
  4. Just D.
    Replies:
    0
    Views:
    416
    Just D.
    Aug 11, 2004
  5. newbiegalore

    picking up URL when link is clicked

    newbiegalore, Apr 14, 2008, in forum: Javascript
    Replies:
    7
    Views:
    102
    newbiegalore
    Apr 15, 2008
Loading...

Share This Page