Dean Edwards wrote:
Jim Ley wrote:
That is not immediately apparent, and neither is it apparent that a
classname specific shortname is worthwhile when a CSSSelector one
would be more appropriate.    You don't continually add methods,
methods are complexity, they need writing, they need testing etc.  you
have to have a reason to add a method.


A good API should expose a meaningful interface to its consumer. If we are allowed to define data according to a skew on its structure (HTML className) then the interface to that data should reflect this.

The getElementsByClassName() method has already been compared to the getElementsByTagName() and getElementById() methods. "class" is another way to slice the data. It is a core part of HTML, the language we are extending.

To me, getElementsByClassName() is a missing feature of the DOM to support HTML4. I'd be happy if that were fixed in HTML5.


I think this is a very clear explanation of the reasons to include it, it's not as if we're discussing GetElementsByOnMouseOver() here. But let's throw out a use case off the top of my head:

i'm making a shopping cart and each product has a checkbox next to it, to select it for deletion, there are also other checkboxes on the page, one to agree to the terms, another to sign up for the mailing list, another to sign up for "advertisements from our business partners", another one up at the top right by a search box for a search option and finally the "select all for deletion" checkbox. when i click on the latter i want to check all the individual checkboxes for each product. as they're in the basket i'm specifically styling them class="prodchck". so to check them all all i need to do is:

function checkall()
{
        var a = document.getElementsByClassName("prodchck");
        for( var i = 0 ; i < a.length ; i++ )
                a[i].checked = true;
}


Reply via email to