On 7/16/07, Kieran O'Neill <[EMAIL PROTECTED]> wrote: > On 7/16/07, Bob Ippolito <[EMAIL PROTECTED]> wrote: > > > > On 7/16/07, MerlinTheCat <[EMAIL PROTECTED]> wrote: > > > > > > Hi, I'm well versed in JS - but I've been struggling to understand > > > MochiKit for a couple of days... help from anyone who can clear my > > > brainblock would be appreciated. Thanks. > > > > > > I'm trying to add a form on the page dynamically. The H1 and [object > > > Object] form? gets displayed on the page... but I can't see the form > > > or access any of it's fields or submit it??? > > > > > > Here's my code: > > > > > > > > > MochiKit.DOM.withWindow(self.window, MochiKit.Base.bind( function() { > > > > > > var doc = MochiKit.DOM.currentDocument(); > > > MochiKit.DOM.appendChildNodes(doc.body, H1(null,"This gets added > > > OK")); > > > > > > var formObj = MochiKit.DOM.FORM({"id":"myForm", > > > "action":"test01.asp", "method":"post"}, {"inputs": [{"type":"text", > > > "id":"field1", "name":"field1", "value":"newval"}, {"type":"submit", > > > "name":"mySubmit", "value":"mySubmit"}]}); > > > > > > MochiKit.DOM.appendChildNodes(doc.body, formObj); > > > > > > alert(doc.body.formObj.field1); // this indicates undefined? > > > alert(doc.formObj.field1); // this indicates undefined? > > > > > > }, this)); > > > > That's because the code you wrote doesn't make any sense. {"inputs": [ > > ... ]} isn't going to do anything. You need to do the same thing > > you're doing with FORM, except with INPUT. > > > > FORM(attrs, INPUT(attrs), INPUT(attrs), ...) > > > > -bob > > > You should try getting a DOM inspector. It's extremely useful for > working out what is and isn't being produced in complex DOM creation > code. Firebug has a good one. > > Also, as Bob said, the functions FORM, INPUT, etc work on a > per-element basis, since they are just partially executed calls to > createDOM. (eg: FORM == partial(createDOM, "FORM") ) > > createDOM, and hence all these functions, takes two arguments after > the DOM element type is specified: the attributes of the element (as a > dictionary), and the elements to nest within it (as an Array). The > nested elements need to either be constructed DOM objects, or objects > that can be coerced into DOM objects, such as strings.
createDOM takes one attribute argument and every other argument is coerced into a child node. You don't need to use an Array, but if you do use an one somewhere in the tree it'll get flattened. -bob --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "MochiKit" group. To post to this group, send email to mochikit@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/mochikit?hl=en -~----------~----~----~----~------~----~------~--~---