Yes, exactly. In that case:
var old = $('thisisatd');
var tr = TR(null);
var tbl = TABLE(null, TBODY(null, tr));
tr.innerHTML = '<td id="thisisatd" colspan="3">A new text</td><td
id="thisisanothertd" colspan="3">A new text</td>';
forEach(tr.childNodes, function(td){
old.parentNode.insertBefore(td, old);
});
removeElement(old);
Regards
..
Amit Mendapara
On Sep 8, 5:52 pm, "Arnar Birgisson" <[EMAIL PROTECTED]> wrote:
> Hey there,
>
> On Mon, Sep 8, 2008 at 13:43, gregor <[EMAIL PROTECTED]> wrote:
> > I would like to change a DOM Object with a turbogears ajax call.
> > At the moment the ajax call returns a string with the html of the node
> > that should be replaced. How can I swap the existing DOM Object with
> > the new one I got from the ajax callback?
>
> > InnerHTML replaces the inner part of the element, but I want to
> > replace the whole thing. OuterHtml seems to what I need but it does
> > not work in Firefox. swapDOM takes two DOM-Objects, but I've only got
> > a string for the replacement. How can I convert a string to a DOM
> > object?
>
> First of all, not that in general a string can represent a HTML
> fragment containing more than one element. Consider:
>
> "<td>number1</td><td>number2</td>"
>
> My point is that you cannot take any string and convert it to just one
> DOM element. However, say your strings always contain one complete
> element, or that you just want to pick out the first one, you can
> create a temporary element (not injected in the document) to use
> innerHTML on, and the use swapDOM to inject the first child. I.e.
> (note, this is untested code written directly in the email):
>
> var str = "<td>something from an ajax call</td>";
> var container = DIV();
> container.innerHTML = str;
> swapDOM("id-of-element-to-remove", container.firstChild);
>
> Actually, if you did want *all* elements from the fragment, you could
> to this I guess:
>
> var str = "<td>something from an ajax call</td>";
> var container = DIV();
> container.innerHTML = str;
> insertSiblingNodesAfter("id-of-element-to-remove", container.childNodes);
> removeElement("id-of-element-to-remove");
>
> However, you should note that with the proper content-type for the
> ajax response and depending on your specific use, you might already
> have a ready-made DOM object in the XMLHttpRequest object under the
> property responseXML
>
> cheers,
> Arnar
>
> > Pseudo example:
>
> > <html>
> > <table>
> > <tr><td id="thisisatd" colspan="2">A text</td></tr>
> > </table>
> > </html>
>
> > From the Ajax call I get the string back "<td id="thisisatd"
> > colspan="3">A new text</td></tr>".
> > How can I replace the td with this new string?
>
> > My current function to do this looks like this:
>
> > var doReplace = function (req) {
> > for (var e in req.changes) {
> > var element = document.getElementById(e)
> > if (element) {
> > element.outerHTML = req.changes[e]; // <- Does not work in
> > Firefox
> > }
> > else {
> > alert("element not found:" + e);
> > }
> > }
> > }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"MochiKit" 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/mochikit?hl=en
-~----------~----~----~----~------~----~------~--~---