Hi Walter, yes the string comes from an ajax call and is not guaranteed to always follow the same pattern. However, by now I'm using prototype's BlindDown-effect when inserting and that even requires me to have a div wrapping what I want to insert (because of padding/margin), so it's ok that it's there. But still thanks a lot for your help, now I know that creating DOM just from a string needs a little workaround. It will surely not be the last time I need this.
Thanks Lukas On Dec 7, 7:42 pm, Walter Lee Davis <wa...@wdstudio.com> wrote: > Is mystring what you get back from your Ajax request? Do you control > the server that sends it? > > If you want to end up with the Element div.something inserted > somewhere on your page, you could do this pretty simply: > > var mystring = '<p>text <a href="#">link</a></p><p>More text</p><img > src="asd" />'; > //mystring could also be the output from your Ajax request > var myDomObject = new Element('div',{ > "someProperty": "someValue", > "someFunction": function() {}, ...}).update(mystring); > > myDomObject.addClassName('something'); > //no need to extend, 'new Element' is already extended > $('myDiv').insert({top: myDomObject}); > > So you create the outermost level of the DOM object using new Element, > and that gets you everything you need. You could also pass back from > your server a JSON graph of the desired element, and pass that to new > Element directly, and you could skip some of this. > > By the way, I do the addClassName thing separately to humor IE, which > doesn't seem to work when you define the classname in the new Element > parameters level. I haven't tracked this issue to see if it's been > fixed in newer versions of the library, I've just been doing it out of > habit. If anyone can confirm that this is now no longer needed, I'd be > happy to remove it and put it back in the parameters hash where I > believe it belongs. > > Walter > > On Dec 7, 2010, at 12:53 PM, Luke wrote: > > > > > Ok, what I wanna do is this: > > > ----- > > var mystring = '<div class="something"><p>text <a href="#">link</a></ > > p><p>More text</p><img src="asd" /></div>'; > > > var myDomObject = createDomFromString(mystring); > > > var methodsAndProperties = {"someProperty": "someValue", > > "someFunction": function() {}, ... }; > > > Object.extend(myDomObject, methodsAndProperties); > > > $('myDiv').insert({top: myDomObject}); > > ----- > > > In "normal" words, what I want to do is create a DOM-Object BEFORE I > > insert it, so I can perform some extensions on it, and dont't have to > > do: > > > ----- > > var mystring = '<div class="something"><p>text <a href="#">link</a></ > > p><p>More text</p><img src="asd" /></div>'; > > > var foo = new Element('div', {}).update(mystring); > > > var myDomObject = foo.select('.something').first(); > > > Object.extend(myDomObject, methodsAndProperties); > > > $('myDiv').insert({top: myDomObject}); > > ----- > > > or even insert it, and then search for it. > > > On Dec 7, 5:10 pm, Rick.Wellman <rick.well...@kiewit.com> wrote: > >> Is it just me,... I don't understand what you're even asking/trying > >> to accomplish? > >> What kind of "DOM" object are you hoping to create? Call it a > >> potayto, or a potahto but any "element" you insert the HTML into is > >> a "wrapper". > > >> Apologies if this seems terse but I truly do not understand your > >> question/goal. > > >> -----Original Message----- > >> From: prototype-scriptaculous@googlegroups.com > >> [mailto:prototype-scriptaculous@googlegroups.com > >> ] On Behalf Of Luke > >> Sent: Tuesday, December 07, 2010 9:59 AM > >> To: Prototype & script.aculo.us > >> Subject: [Proto-Scripty] Re: How to create a new DOM-element from a > >> string? > > >> Hm ok, hoped there would be a way I could generate a DOM object that > >> consists of just the HTML (without wrapper) and before I insert it. > > >> On Dec 7, 4:52 pm, Walter Lee Davis <wa...@wdstudio.com> wrote: > >>> That's because I called innerHTML on it at the end, and that > >>> returns a > >>> string. If you then want to create a new element out of that, you > >>> could try inserting it into your page somewhere with > > >>> $('someElementOnYourPage').insert({after: foo}); > > >>> Of you could just leave the innerHTML part off the end, which would > >>> leave foo populated with the outer wrapper object created by new > >>> Element... > > >>> Walter > > >>> On Dec 7, 2010, at 3:20 AM, Luke wrote: > > >>>> Hmm, damn. the returned value is still a string :( > > >>>> On Dec 7, 9:16 am, Luke <kickingje...@gmail.com> wrote: > >>>>> Thanks Walter! > > >>>>> On Dec 6, 6:28 pm, Walter Lee Davis <wa...@wdstudio.com> wrote: > > >>>>>> On Dec 6, 2010, at 12:12 PM, Walter Lee Davis wrote: > > >>>>>>> It's OT for this list, but have a look at Prototype.js. You can > >>>>>>> create a new DOM element in memory, and do all the things you > >>>>>>> want > >>>>>>> to it without ever showing it to the user. > > >>>>>> Sorry, this was completely bone-headed of me -- I thought I was > >>>>>> on > >>>>>> another list. > > >>>>>> Walter > > >>>> -- > >>>> You received this message because you are subscribed to the Google > >>>> Groups "Prototype & script.aculo.us" group. > >>>> To post to this group, send email to > >>>> prototype-scriptaculous@googlegroups.com > >>>> . > >>>> To unsubscribe from this group, send email to > >>>> prototype-scriptaculous+unsubscr...@googlegroups.com > >>>> . > >>>> For more options, visit this group > >>>> athttp://groups.google.com/group/prototype-scriptaculous?hl=en > >>>> . > > >> -- > >> You received this message because you are subscribed to the Google > >> Groups "Prototype & script.aculo.us" group. > >> To post to this group, send email to > >> prototype-scriptaculous@googlegroups.com > >> . > >> To unsubscribe from this group, send email to > >> prototype-scriptaculous+unsubscr...@googlegroups.com > >> . > >> For more options, visit this group > >> athttp://groups.google.com/group/prototype-scriptaculous?hl=en > >> . > > > -- > > You received this message because you are subscribed to the Google > > Groups "Prototype & script.aculo.us" group. > > To post to this group, send email to > > prototype-scriptaculous@googlegroups.com > > . > > To unsubscribe from this group, send email to > > prototype-scriptaculous+unsubscr...@googlegroups.com > > . > > For more options, visit this group > > athttp://groups.google.com/group/prototype-scriptaculous?hl=en > > . -- You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptacul...@googlegroups.com. To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en.