getAttribute ('id') Not Working

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

    #1

    getAttribute ('id') Not Working

    Hi ,

    In one of the javascript functions , i need to get the ids of the
    elements. This function works in Internet Explorer :

    var TabNames = ParentTab.child Nodes ;

    for ( i = 0 ; i < TabNames.length ; i++ )
    {
    var TabID = TabNames[i].getAttribute(' id') ;
    var TabIDSuffix = TabID.split (Splitter) ;

    if ( TabIDSuffix[0].length != 0 )
    {
    if ( TabIDSuffix[0] == URLTab )
    {
    result = true ;
    break ;
    }
    }

    }
    // TabNames is the array of divs which are enclosed in the parent div.

    But in Firefox it gives an error saying :
    Error: TabNames[i].getAttribute is not a function

    Is there an alternate way to do this.

  • VK

    #2
    Re: getAttribute ('id') Not Working


    vivekian wrote:
    In one of the javascript functions , i need to get the ids of the
    elements. This function works in Internet Explorer :
    >
    var TabNames = ParentTab.child Nodes ;
    >
    for ( i = 0 ; i < TabNames.length ; i++ )
    {
    var TabID = TabNames[i].getAttribute(' id') ;
    var TabIDSuffix = TabID.split (Splitter) ;
    >
    if ( TabIDSuffix[0].length != 0 )
    {
    if ( TabIDSuffix[0] == URLTab )
    {
    result = true ;
    break ;
    }
    }
    >
    }
    // TabNames is the array of divs which are enclosed in the parent div.
    >
    But in Firefox it gives an error saying :
    Error: TabNames[i].getAttribute is not a function
    You are hitting the phantom nodes problem on Gecko-based browsers
    <http://en.wikipedia.or g/wiki/Phantom_nodes>

    You have to add extra check to sort out element nodes and parasite text
    nodes from your pretty-print. See for instance
    <http://developer.mozil la.org/en/docs/firstChild(skip on pathetic
    arguments why phantom nodes are not a bug and see the samples
    themselves).

    You can also use anti-phantom pretty-print:

    <body
    ><h1>Header</h1
    ><p>Content</p
    ><p>More content
    ....

    but unless you have an automation script (mine is on Perl) that's a
    boring doing.

    Comment

    • Martin Honnen

      #3
      Re: getAttribute ('id') Not Working

      vivekian wrote:
      In one of the javascript functions , i need to get the ids of the
      elements. This function works in Internet Explorer :
      >
      var TabNames = ParentTab.child Nodes ;
      >
      for ( i = 0 ; i < TabNames.length ; i++ )
      There could be a text node or comment node as a child which does not
      have attribute so do a check for element nodes first e.g.
      {
      var childNode = TabNames[i];
      if (childNode.node Type === 1) {
      // now you have an element and can access attributes of the element
      var TabID = TabNames[i].getAttribute(' id') ;
      }

      If that is HTML that you script then simply use
      childNode.id
      not
      childNode.getAt tribute('id')
      --

      Martin Honnen
      http://JavaScript.FAQTs.com/

      Comment

      • Erwin Moller

        #4
        Re: getAttribute ('id') Not Working

        vivekian wrote:
        Hi ,
        >
        In one of the javascript functions , i need to get the ids of the
        elements. This function works in Internet Explorer :
        >
        var TabNames = ParentTab.child Nodes ;
        >
        for ( i = 0 ; i < TabNames.length ; i++ )
        {
        var TabID = TabNames[i].getAttribute(' id') ;
        var TabIDSuffix = TabID.split (Splitter) ;
        >
        if ( TabIDSuffix[0].length != 0 )
        {
        if ( TabIDSuffix[0] == URLTab )
        {
        result = true ;
        break ;
        }
        }
        >
        }
        // TabNames is the array of divs which are enclosed in the parent div.
        >
        But in Firefox it gives an error saying :
        Error: TabNames[i].getAttribute is not a function
        >
        Is there an alternate way to do this.
        Does TabNames[i].id return something usable?

        Erwin Moller

        Comment

        • JP. Baker

          #5
          Re: getAttribute ('id') Not Working

          In article <1165330667.536 168.85350@16g20 00cwy.googlegro ups.com>,
          vivekian <viveklinux@gma il.comwrote:
          >In one of the javascript functions , i need to get the ids of the
          >elements. This function works in Internet Explorer :
          >
          >var TabNames = ParentTab.child Nodes ;
          >
          > for ( i = 0 ; i < TabNames.length ; i++ )
          > {
          > var TabID = TabNames[i].getAttribute(' id') ;
          > var TabIDSuffix = TabID.split (Splitter) ;
          >
          > if ( TabIDSuffix[0].length != 0 )
          > {
          > if ( TabIDSuffix[0] == URLTab )
          > {
          > result = true ;
          > break ;
          > }
          > }
          >
          > }
          >// TabNames is the array of divs which are enclosed in the parent div.
          >
          >But in Firefox it gives an error saying :
          >Error: TabNames[i].getAttribute is not a function
          You are almost certainly hitting the text nodes as well as the required
          nodes - check with the DOM Inspector - you should probably check the
          nodeType or use hasAttributes() before calling getAttributes.

          --
          John P Baker

          Comment

          • ASM

            #6
            Re: getAttribute ('id') Not Working

            vivekian a écrit :
            In one of the javascript functions , i need to get the ids of the
            elements. This function works in Internet Explorer :
            Are your elements really have an id (and not only a name) ?
            IE love too much to call a name an id and vice versa.
            But in Firefox it gives an error saying :
            Error: TabNames[i].getAttribute is not a function
            >
            Is there an alternate way to do this.
            for ( i = 0 ; i < TabNames.length ; i++ )
            {
            if(TabNames[i] && TabNames[i].tagName=='DIV' && TabNames[i].id)
            var TabID = TabNames[i].getAttribute(' id') ;

            Or try :

            for ( i = 0 ; i < TabNames.length ; i++ )
            {
            if(TabNames[i] && TabNames[i].id)
            var TabID = TabNames[i].id;

            --
            Stephane Moriaux et son (moins) vieux Mac déjà dépassé
            Stephane Moriaux and his (less) old Mac already out of date

            Comment

            • RobG

              #7
              Re: getAttribute ('id') Not Working


              vivekian wrote:
              Hi ,
              >
              In one of the javascript functions , i need to get the ids of the
              elements. This function works in Internet Explorer :
              >
              var TabNames = ParentTab.child Nodes ;
              Others have given you some ideas, but always room for more: :-)

              var TabNames = ParentTab.getEl ementsByTagName ('div');

              Now TabNames contains *only* div elements, not all the childNodes of
              TabNames. Or you could use feature detection (see below).

              >
              for ( i = 0 ; i < TabNames.length ; i++ )
              {
              var TabID = TabNames[i].getAttribute(' id') ;
              var TabIDSuffix = TabID.split (Splitter) ;
              How about testing for the id property rather than using getAttribute:

              var TabID, TablDSuffix;
              if ((TabID = TabNames[i].id) && (TabIDSuffix =
              TabID.split (Splitter))){
              /* Do stuff with TabIDSuffix */
              }


              --
              Rob

              Comment

              Working...