W3C home > Mailing lists > Public > www-dom@w3.org > July to September 2011

Re: [DOM4]: Element.create

From: Sean Hogan <shogun70@westnet.com.au>
Date: Wed, 21 Sep 2011 11:47:55 +1000
Message-ID: <4E79424B.9010606@westnet.com.au>
To: Dominic Cooney <dominicc@chromium.org>
CC: www-dom@w3.org, Charles Pritchard <chuck@jumis.com>
On 21/09/11 11:21 AM, Dominic Cooney wrote:
> It would be nice, in addition to HTMLElement.create, if elements could
> be created directly using new and the constructor taking similar
> arguments, eg
> HTMLElement.create('div', {...}, ...)
> is the same as
> new HTMLDivElement({...}, ...)
> The reason this is nice is that if you mistype the element name, you
> get an error message much closer to the typo. It would be nicer still
> if the constructors names were short, eg Div instead of
> HTMLDivElement.
> Needless to say, HTMLElement.create is useful like
> document.createElement is useful, for creating unknown elements or for
> reflecting on tag names (although the .constructor property could be
> used for that instead.)
>> Can you give some proper examples where Element.create() makes DOM
>> generation simpler? I've only seen vague hand-waving up to now.
> To me I think this:
> document.body.appendChild(new Div({className: 'warning'}, [new
> Text('Danger, Will Robinson!']));
> Is preferable to this:
> var d = document.createElement('div');
> d.className = 'warning';
> d.textContent = 'Danger, Will Robinson!';
> document.body.appendChild(d);
> The former is mercifully only four lines because of textContent; if it
> contained markup, it would be even more verbose.
> Dominic

That's not a proper example, and anyway it would be much simpler to use:

     '<div class="warning">Danger, Will Robinson!</div>');

A proper example would be to show how the internals of a popular JS lib 
would be refactored, or a significant example of DOM generation such as 
a table.

Received on Wednesday, 21 September 2011 01:48:17 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 20 October 2015 10:46:18 UTC