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 [email protected] 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 -~----------~----~----~----~------~----~------~--~---
