While I love the simplicity of the function, there is one workaround  
that I think needs to be considered.  IE does not allow the 'name'  
attribute to be changed after createElement() is called.

To quote MSDN: "The NAME attribute cannot be set at run time on  
elements dynamically created with the createElement method."
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/ 
dhtml/reference/properties/name_2.asp

Workarounds have been posted here:
http://www.thunderguy.com/semicolon/2005/05/23/setting-the-name- 
attribute-in-internet-explorer/
http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/

May I suggest the following:

function Element(tagName, options) {
        var el = null;
        if (options.name) {
                try {
                        document.createElement('<'+ tagName +' 
name="'+options.name+'">');
                        delete options.name;
                } catch () {} //fails if not IE
        }
        el = el  || document.createElement(tagName)); //create if null
        
         return Element.extend(el).writeAttributes(options || {});
}


TAG

On Feb 6, 2007, at 7:56 AM, Mislav Marohnić wrote:

> Andrew: that two features bring us back to Dan's or mine  
> implementations and take out the lightweightness of Martin's  
> elegant solution.
>
> Martin: by all means, submit a patch with tests on the already  
> existing ticket:
> http://dev.rubyonrails.org/ticket/7476#comment:1
>
> Doing so will enable easy reviewing and comparing.
>
> -m
>
> On 2/6/07, Andrew Dupont <[EMAIL PROTECTED]> wrote:
>
> Martin, I like your implementation a lot (especially the
> Element.writeAttributes idea, which I think should be added no matter
> what) but it's missing two things I like most about Dan Webb's
> DOMBuilder:
>
> * Tags as method names.  Much easier to do x.DIV(foo, bar) than to do
> new Element("div", foo, bar).
> * Easy nesting (like "x.DIV( x.P ( x.SPAN() ) )").  DOMBuilder
> responds differently based on the number and types of arguments
> passed.
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to