Gervase Markham wrote:
Brad Fults wrote:
I see this is still an open issue[1]. Is this now implemented as #1
(space-delimited class names to match)?

I suggest either going with the space-delimited approach (as it's
language-agnostic and well-defined at least) or with Aankhen's
suggestion of a single array argument.

Musing...

If you have:

<p class="foo bar">Fred</p>
<p class="bar foo">Barney</p>
<p class="foo baz bar">Wilma</p>

which should be picked up by getElementsByClassName("foo bar")?

this also raises the possibility of some confusion as the order of inheritance is important:

foo
{
   color: red;
}

bar
{
   color: blue;
}

in the quoted example Fred and Wilma would be blue and barney red. so the distinction between class="foo bar" and class="bar foo" is real, not merely syntactic. a search for "foo" should pick up either but a search for "foo bar" should only find the first, so IMO a comma seperated list would be better in that respect:

1. getElementsByClassName("foo bar,foo tang,woo tang")

this use of explicit class matching could, however be considered an "advanced" use of the function, with emphasis on the simpler:

2. getElementsByClassName("bar,tang")

as an aside this then yields another level of even more complex behavioural possibilities:

3. getElementsByClassName("foo>bar")

though in this example the ClassName, having not being explicitly declared in the markup. is not what is being selected, but a derived inheritance, perhaps warranting a new function

4. getElementsByRelationship("foo:firstChild")

what this would mean, therefore is that

5. <div class="foo bar">

would be selected by example 1. whereas

6. <div class="foo"><div class="bar">

would be selected by example 3. specifically and example 4. if the designer wanted to make assumptions about the resuting DOM

Ric

Reply via email to