[whatwg] Use cases for Node.getElementById

Calogero Alex Baldacchino alex.baldacchino at email.it
Wed Dec 10 08:10:06 PST 2008


Garrett Smith ha scritto:
> On Sat, Dec 6, 2008 at 7:09 PM, Calogero Alex Baldacchino
> <alex.baldacchino at email.it> wrote:
>   
>> Simon Pieters ha scritto:
>>     
>>> On Fri, 05 Dec 2008 19:19:04 +0100, Calogero Alex Baldacchino
>>> <alex.baldacchino at email.it> wrote:
>>>
>>>       
>>>> [...]
>>>>         
>>> (I'm currently the editor of that proposal, currently located at
>>> http://simon.html5.org/specs/web-dom-core )
>>>
>>>       
>> I'm reading it :-)
>>
>> And I have a few questions.
>>     
>
> I did not see a proposal for Element.getElementById.
>
> I would not care about that much.
>
> I woud rather have
>
> Element.getElementsByName.
>
> It is perfectly valid for a doucment to have multiple elements w/the
> same name (though not generally a good idea). I've seen this before.
>
> Was this proposed?
>
> Garrett
>   
I don't remember what spec exactly stated this first, but I remind of a 
previous HTML version declaring the 'name' attribute as unique in the 
'global scope' (or something like that), meaning the whole document; 
then, I remember 'name' was deprecated in favour of 'id'. I think 
'getElementsByName' was retained from the past just because form 
elements scoped input names in a different manner (while the name of an 
anchor, for instance, had to be unique in the whole document), but it 
was a bit conflicting with the uniqueness of (at least some) elements' 
name. Anyway, this is what I remember (current specification no more 
defines a name attribute for every elements - it's not on the 
HTMLElement interface).

However, the issue about Node.getElementById originated by noticing 
problems with duplicate ids in existing pages and the likelihood new 
pages may have duplicate ids (e.g. by repeatedly cloning and inserting 
nodes without caring of all attributes), thinking on the opportunity to 
address such an illegal state somehow. If non-unique identifiers have to 
be a deliberate and 'careful' choise, such to involve a dedicated 
attribute, perhaps the class attribute and [ HTMLDocument | HTMLElement 
| whatever_else_implementing ].getElementsByClassName() methods can 
address that: classes are non-unique not only for the whole document, 
but also for the same element, which may have multiple classes listed in 
its attribute (each class name is unique in the list), so they might be 
used for some non-style-related purposes, just appending a name to the 
list of styling classes (just to give some clearness, though 
unnecessary), and querying it with getElementsByClassName() would work 
the same way as resorting to the 'name' attribute and the 
'getElementsByName()' method (perhaps a bit tricky, but should work fine).

~~~~~~~~~~

@ Simon Pieters (and everyone else on the list, of course).

I was thinking again on 'getElementsByClassName()' moved to Web DOM 
Core: maybe a good place for it might be the Node interface, so to have 
the method working on Documents as well as on Elements; if the 
HTMLCollection interface were moved as well, perhaps such might be the 
return value, instead of a NodeList, since non-element Nodes should 
never be expected to have a class name, I guess (perhaps doing the same 
with getElementsByTagName might be consistent, but maybe problematic 
because of backward compatibility -- while getElementsByClassName would 
be a 'new entry' in the 'reign' of Core interfaces, thus a greater 
degree of freedom might be taken, if reasonable, of course - it may 
depend on a known need for different, specilized algorithms in Document 
and Element nodes, for instance).

Best regards,
Alex
 
 
 --
 Caselle da 1GB, trasmetti allegati fino a 3GB e in piu' IMAP, POP3 e SMTP autenticato? GRATIS solo con Email.it http://www.email.it/f
 
 Sponsor:
 RC Auto?
* Con Direct Line garanzia furto e incendio a soli 30 € per un anno! Non perdere l’occasione!
* 
 Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=8497&d=10-12



More information about the whatwg mailing list