This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
The new DOM mutation methods are excellently great, but I would like to request the addition of one more function: swap. Particularly for DOM diffing (turning one element into another) where the operations are removals, insertions and relocations, as well as "collection" relocations (moving a sequence of elements up/down in their container) a swap() operation will greatly improve legibility as well as writability. Compare these two DOM fragments: A: <figure> <!--image--> <img...> <!-- guide text --> <figcaption>text</figcaption> <figure> B: <figure> <!-- guide text --> <figcaption>text</figcaption> <!--image--> <img...> <figure> Turning A into B (as a diff, or because a user did something that was equivalent to a drag operation on the first two or last two non-Text nodes) using a .swap() operation would be a two line constructions: figure.swap(1,5); // or figure.swap(commentElement1, commentElement2) figure.swap(2,6); // or figure.swap(imgelement, figCaptionElement) This code would be preferable to having to relocate elements using inserts, where each insert must be followed by checks to see whether a relocation now requires an insert, or an append because the next swap can be performed. It would also reduce the number of DOM mutation events being generated for a swap from two events that are either the same (two inserts) or different (an insert and an append) to a single event that always represents a swap.
There is no way to edit a bug text, so: s/two line constructions/two line construction/ s/an append because/an append before/
Closing this due to insufficient interest. If you want to pursue this we'll need the following: * Libraries that offer this * A processing model that illustrates how this generates better mutation records than doing it manually * A GitHub issue since we stopped using Bugzilla for the DOM Standard
I forgot to say, thank you for taking the time to suggest this. Sorry it didn't work out.