Это то понятно
так уже делается в самом html. Но вот в чем суть, таблице разные по структуре, но у всех у них, есть скажем поле name примерно такого значение: TABLE_TITLE_{ID_ROOT_TABLE}....
Так поясню подробнее задачи, пытаюсь реализовать механизм размножения таблиц(таблицы различаются). Изначально на странице появляется по одной таблице каждого типа, после загрузки каждой уникальной таблицы запускается savePatternTable('{ID_ROOT_TABLE}') - сохраняем исходное состояние каждой уникальной таблицы(таблицы имеют элементы ввода,которые могут изменятся). ID_ROOT_TABLE - это ID уникальной таблицы, для первой оригинальной таблицы примерно такого вида: CUT_IMAGE[0]..... Теперь нажав плюсик возле какой-то таблички, у нас под ней должна появится ее копия, только все ID в этой копии, должны быть изменится, например для первой копии: CUT_IMAGE[1].
Дык вот получается такая задача, что сохранив копию уникальной таблицы, для добавления ее экземпляра на страницу, нужно пройтись по сохраненной копии и заменить все ID на другие.
Задача в прицнипе тривилаьная, если точно знаем уровень вложенности элементов в таблицу. Но в моем случае это не так, все таблицы кардинально отличаются друг от друга как по уровню вложенности элементов, так и по их количеству.Едиснтвенное что нам известно, так это массив ID которые мы должны изменить, примерно в таком виде: Array('CUT_IMAGE','IMAGE_WIDTH','IMAGE_HEIGHT'), а также номер последней добавленной на страницу копии таблицы(под которой нажали плюс).
Кратко говоря алгоритм такой: на старте есть несколько уникальных таблиц, сохраняем их структуру и первоначальные значения элементов ввода в шаблон(MULTI[ID]), далее чтобы создать еще один экземпляр какой-то таблицы, копируем шаблон соответствующий ей, проходим по всем необходимым нам ID в этой копии шаблона и меняем циферку в [] на значение Counts[ID], затем выводим копию шаблона, и прибавляем единицу к Counts[ID]