Connecting Tech Pros Worldwide Forums | Help | Site Map

object questions and difficulty

Michael Hill
Guest
 
Posts: n/a
#1: Jul 20 '05
This a valid call:
document.myform.elements['myelement']
so is this:
document.forms[0].elements[1]
but not this:
document.forms[0].elements['myelement']

So, I have to iterate through the elements to find my field and make a
change to the element properties

myfield = "myelement";
for ( i=0; i<document.forms[1].elements.length; i++ )
{
if ( document.forms[1].elements[i].name == myfield )
{
document.forms[1].elements[i].class = "newstylesheetformat";
}
}
}

Why is the document.forms[1].elements[i].class property not accessible
using this method even though I specified it in the form?

If I wanted to iterate through the properties of the elements how would
I do this, like this?

for ( i=0; i<document.forms[1].elements.length; i++ )
{
for ( j=0; j<document.forms[1].elements[i].properties.length; i++ )

{
alert(document.forms[1].elements[i].properties.name);
}
}
}



Lasse Reichstein Nielsen
Guest
 
Posts: n/a
#2: Jul 20 '05

re: object questions and difficulty


Michael Hill <hillmw@ram.lmtas.lmco.com> writes:
[color=blue]
> Why is the document.forms[1].elements[i].class property not accessible
> using this method even though I specified it in the form?[/color]

Probably because it should be
document.forms[1].elements[i].className
The renaming is most likely because "class" is a restricted word or keyword
in many languages (including Javascript).
[color=blue]
> If I wanted to iterate through the properties of the elements how would
> I do this, like this?[/color]

What do you mean by "properties"?

In Javascript, an object has properties. You iterate through (some of) them
with
for (var propName in objRef) { ... propName ... }

If you mean the attributes of the html tag, it ".attributs" that you need
to run through:
for ( j=0; j<document.forms[1].elements[i].attributes.length; i++ )

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'
Lee
Guest
 
Posts: n/a
#3: Jul 20 '05

re: object questions and difficulty


Michael Hill said:[color=blue]
>
>This a valid call:
> document.myform.elements['myelement']
>so is this:
> document.forms[0].elements[1]
>but not this:
> document.forms[0].elements['myelement'][/color]

In what browser is that not valid? It works in Netscape and IE.

Michael Hill
Guest
 
Posts: n/a
#4: Jul 20 '05

re: object questions and difficulty


Lasse,

Thanks for helping. So you are saying everytime I want to change the class of
my input text item I have to do this?

for ( i=0; i<document.forms[1].elements.length; i++ )
{
if ( document.forms[1].elements[i].name == myfield )
{
for ( j=0; j<document.forms[1].elements[i].attributes.length; j++ )
{
if ( document.forms[1].elements[i].attributes[j].name == "class" )
{
document.forms[1].elements[i].attributes[j].value = "grey";
break;
}
}
}
}

Lasse Reichstein Nielsen wrote:
[color=blue]
> Michael Hill <hillmw@ram.lmtas.lmco.com> writes:
>[color=green]
> > Why is the document.forms[1].elements[i].class property not accessible
> > using this method even though I specified it in the form?[/color]
>
> Probably because it should be
> document.forms[1].elements[i].className
> The renaming is most likely because "class" is a restricted word or keyword
> in many languages (including Javascript).
>[color=green]
> > If I wanted to iterate through the properties of the elements how would
> > I do this, like this?[/color]
>
> What do you mean by "properties"?
>
> In Javascript, an object has properties. You iterate through (some of) them
> with
> for (var propName in objRef) { ... propName ... }
>
> If you mean the attributes of the html tag, it ".attributs" that you need
> to run through:
> for ( j=0; j<document.forms[1].elements[i].attributes.length; i++ )
>
> /L
> --
> Lasse Reichstein Nielsen - lrn@hotpop.com
> Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
> 'Faith without judgement merely degrades the spirit divine.'[/color]

Lasse Reichstein Nielsen
Guest
 
Posts: n/a
#5: Jul 20 '05

re: object questions and difficulty


Michael Hill <hillmw@ram.lmtas.lmco.com> writes:
[color=blue]
> So you are saying everytime I want to change the class of my input
> text item I have to do this?
>
> for ( i=0; i<document.forms[1].elements.length; i++ )
> {
> if ( document.forms[1].elements[i].name == myfield )
> {
> for ( j=0; j<document.forms[1].elements[i].attributes.length; j++ )
> {
> if ( document.forms[1].elements[i].attributes[j].name == "class" )
> {
> document.forms[1].elements[i].attributes[j].value = "grey";
> break;
> }
> }
> }
> }[/color]

That shouldn't be necessary.

document.forms[1].elements.namedItem(myfield).className = "gray";

If you insist on changing the HTML attribute value (some browsers don't
link className and the class Attribute element):

var elem = document.forms[1].elements.namedItem(myField);
elem.attributes.getNamedItem("class").value = "gray";

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'
Closed Thread