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 at http://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.

Reply via email to