[thelist] DOM Javascript - childNodes

Mark Howells mark at mark.ac
Thu Dec 18 02:12:41 CST 2003


>> I'm coding a function to join several HTML forms together on a page 
>> and submit them as one, using DOM Javascript.  I parse through the 
>> childNodes of the main forms, then copy the lot into a new form and 
>> submit it.
>
> Why not move them? It's as simple as appending them to the new form, 
> they will be automatically removed from their original position.

The problem I'm having isn't creating the new form, that's working fine 
and I don't want to change or delete the source forms.  The problem is 
that I want to ensure that the target form is empty before I start 
copying elements over.  I need to do this to ensure that I don't end up 
with multiple fields with the same name, if the copy function is run 
more than once before the form is submitted.

>> I am new to DOM JS code and stuck at the point where I want to delete 
>> all the dynamic form elements.  I see that I can ditch the whole form 
>> and all children using obj.removeChild(true), but only want to ditch 
>> the children, not the form itself.  Do I have to loop through the 
>> child elements and delete them one by one, or am I missing something? 
>> What's the most efficient solution?
>
> Remember, childNodes is all types of nodes, not only elements...
> You'd have to loop through it and remove all nodes of a type you want 
> to remove. A perhaps better approach is to replace the form element 
> with a shallow clone of itself, as that provided by 
> oFormElement.cloneNode(false)

form1
form2
form3
mainform

If I clone a form, then I will have two copies of this form, correct?  
(OK, I realize that I can rename the new form using the name 
attribute.)  I need mainform to be a product of form1, form2 and form3: 
wouldn't cloning the existing forms simply give me duplicates of all 
these forms, rather than a single new form with all the elements of the 
other three?

Regards
Mark Howells
http://www.mark.ac/



More information about the thelist mailing list