[Javascript] javascript and id's
Anthony Ettinger
apwebdesign at yahoo.com
Tue Oct 4 12:20:20 CDT 2005
--- Paul Novitski <paul at novitskisoftware.com> wrote:
> At 09:34 AM 10/4/2005, Anthony Ettinger wrote:
> ...
> >I want to change the value of an attribute of an
> input
> >field:
> >
> ><input type="text" name="foo">
> >
> >want to change it to
> >
> ><input type="text" name="bar">
> >
> >What I ended up doing was giving the <input>
> element
> >an id="searchfield", and then looping through it's
> >attributes using '.attributes' on the input object,
> >and testing the name of the attribute == 'name'.
> and
> >then replacing it's value with 'bar'.
> >
> >Is there an easier way to access an attribute of an
> >element if I know it's direct path?
> >
> >Seems to me very inefficient to have to do looping
> if
> >it's not necessary.
>
> Anthony,
>
> Giving an element an id so you can point to it
> without searching is
> great if your situation allows. I can think of
> situations in which I
> might choose to search (loop) for an element --
> e.g., if I
> potentially needed to select more than one element
> in a group, or if
> I needed to select on the basis of attributes other
> than id or
> tagName, or if I didn't have control over the
> markup. In your case
> you need to select an element by its name attribute
> and therefore
> have to either search or add an id.
>
> However, I can't see why you'd need to loop through
> the attributes in
> the target element. If you're using id to point to
> the element, you
> don't need to test for the current name so just set
> the name and
> you're done. If you've found the target element by
> searching, you
> can use the getAttribute() method to check each
> element's name as you
> cycle through them.
> __________________________
> Either:
> < input id="inputFoo" name="foo" ... />
>
> // point to it
> var oInput =
> document.getElementById("inputFoo");
>
> // if it exists, set its name
> if (oInput)
> oInput.setAttribute("bar");
> __________________________
> Or:
> < form id="foo" ... >
> < input name="foo" ... />
> </form>
>
> // point to the form
> var oForm = document.getElementById("foo");
>
> // bail if not found
> if (!oForm) return;
>
> // get array of all INPUT elements
> var aInputs =
> oForm.getElementsByTagName("INPUT");
>
> // search for foo
> for (var iInput = 0; iInput <
> aInputs.length; iInput++)
> {
> // if found...
> if
> (aInputs[iInput].getAttribute("name") == "foo")
> {
> // change name
>
> aInputs[iInput].setAttribute("name", "bar");
>
> // exit the FOR loop
> break;
> }
> }
Yes, this is what I came up with:
function changeAttrib(id, attrib, newValue)
{
var elemObj = document.getElementById(id);
elemObj.setAttribute(attrib, newValue);
return true;
}
Anthony Ettinger
ph: (408) 656-2473
blog: http://www.chovy.com
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com
More information about the Javascript
mailing list