On Fri, 03 Feb 2006 14:34:14 +0200, Gervase Markham <[EMAIL PROTECTED]> wrote:

Shadow2531 wrote:
<...>

This seems like a sensible change. Call it getElementsByClassNames()
would make it obvious that if you supply multiple class names, you get
only elements with all those names. And it would be a reasonably obvious
reduction that if you just supply a single name, you would get all
elements which had that one class name.

So we've ended up with:

elem.getElementsByClassNames("foo");
and

elem.getElementsByClassNames(["foo", "bar"]);
or
elem.getElementsByClassNames("foo", "bar");
or both.

Are there similar functions in the DOM at the moment which can take
multiple arguments? Do you pass an array or multiple individual
arguments, or can you do both?

Gerv

I believe there's some disagreement on what is this function supposed to do.

Example:

<p class="foo bar sample">paragraph 1
<p class="foo sample">paragraph 2
<p class="bar sample">paragraph 3
<p class="sample">paragraph 4

1. Should it return *all* elements which have *all* the class names wanted?

getElementsByClassNames(["foo", "sample"])
returning: p1, p2

2. Should it return *all* elements which have *only* the class names wanted?

getElementsByClassNames(["sample", "foo"])
returning: p2

3. Should it return *all* elements which have *any* of the class names wanted?

getElementsByClassNames(["sample", "foo"])
returning: p1, p2, p3, p4

4. Should the order matter?

It is clear that getElementsByClassNames("foo bar") can't be an option, because the reasons have already been over-stated.

Now... what's left to discuss: what is the function supposed to do? And ... to pick one of the following two methods of giving the list of class names:

getElementsByClassNames("foo", "bar")
or...
getElementsByClassNames(["foo", "bar"])

As I previously stated, I preffer the latter method because we must be able to provide an arbitrary number of class names without using the (AFAIK deprecated) eval().

I also believe this function will always be confusing, no matter what. To drop all confusion just rename it to getElementsByCSSselector() and you get the exact idea to as what you are supposed to provide as an argument (if you know CSS). Yet, this is something Ian Hickson said is beyond the purpose of WHATWG.


--
http://www.robodesign.ro
ROBO Design - We bring you the future

Reply via email to