W3C home > Mailing lists > Public > whatwg@whatwg.org > February 2006

[whatwg] getElementsByClassName()

From: Ric Hardacre <whatwg@cycloid.f9.co.uk>
Date: Wed, 15 Feb 2006 13:03:59 +0000
Message-ID: <43F326BF.9000307@cycloid.f9.co.uk>


Shadow2531 wrote:
> 
> I was *messing* around with 2 different *examples*.
> 
> 1.) http://shadow2531.com/opera/js/getElementsByClassName/000.html
> 
> That one supports:
> getElementsByClassName(string);
> getElementsByClassName(array);
> 
> If the string has spaces in it, it's considered that nothing will
> match and returns null.
> If it's an array, all must be present for an element to match.
> 
> 2.) http://shadow2531.com/opera/js/getElementsByClassName/001.html
> 
> Now this one supports the same 2 types, but the string handling is
> different. The string is space-separated.
> 
> So, with this second example, you can do:
> 
> document.getElementsByClassName("aaa");
> document.getElementsByClassName(["bbb", "ccc"]);
> document.getElementsByClassName("bbb ccc");
> 
> (The second 2 produce the same result. The 3rd one might just be
> cleaner in certain situations)
> 
> I'm liking what options the second example provides. (not necessarily
> the code as I just threw it together and didn't think about
> exceptions, optimization and code size. Plus I just used a global
> function for the example.)
> 
> Do you agree with the string being space-separated?
> It seems to make sense at least for html where a classname can't have spaces.

looks good to me, the only quirk of this would be that you cant choose 
class="foo bar" specifically over class="foo" with gebcn("foo bar") but 
if this is the stated behaviour then i guess that's ok.

on a side note, it might also be worth stating that in this case 
gebcn("foo bar") should only return the class="foo bar" element once, 
not twice (one instance for "foo" and one instance for "bar"). just for 
completeness

ric
Received on Wednesday, 15 February 2006 05:03:59 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:08:26 UTC