| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Поиск элемента в копии таблицы(cloneNode(true)) |
| Автор: 444ert666 29.12.2008, 13:37 | ||
| Добрый день! Задача следующая, есть некоторая таблица с множеством вложений, их количество и порядок нам неизвестен, нам известно только ID таблицы. Вся эта таблица должна храниться в переменной. Делаю так:
Далее мне необходимо найти элемент в этой копии(чтобы изменить его), известен только ID элемента, и ID копии таблицы. как можно реализовать такое? причем уровень вложенности элементов в таблице может быть бесконечно велик. Буду благодарен за любую помощь, намек или подсказку |
| Автор: bars80080 29.12.2008, 14:09 |
| так и ищи это элемент и меняй его, какая связь с id таблицы? он к ней не привязан |
| Автор: 444ert666 29.12.2008, 14:36 |
| Так поясню подробнее задачи, пытаюсь реализовать механизм размножения таблиц(таблицы различаются). Изначально на странице появляется по одной таблице каждого типа, после загрузки каждой уникальной таблицы запускается savePatternTable('{ID_ROOT_TABLE}') - сохраняем исходное состояние каждой уникальной таблицы(таблицы имеют элементы ввода,которые могут изменятся). ID_ROOT_TABLE - это ID уникальной таблицы, для первой оригинальной таблицы примерно такого вида: CUT_IMAGE[0]..... Теперь нажав плюсик возле какой-то таблички, у нас под ней должна появится ее копия, только все ID в этой копии, должны быть изменится, например для первой копии: CUT_IMAGE[1], IMAGE_WIDTH[1], IMAGE_HEIGHT[1] и тд. Дык вот получается такая задача, что сохранив копию уникальной таблицы, для добавления ее экземпляра на страницу, нужно пройтись по сохраненной копии и заменить все ID на другие. Задача в прицнипе тривилаьная, если точно знаем уровень вложенности элементов в таблицу. Но в моем случае это не так, все таблицы кардинально отличаются друг от друга как по уровню вложенности элементов, так и по их количеству. Едиснтвенное что нам известно, так это массив ID которые мы должны изменить, примерно в таком виде: Array('CUT_IMAGE','IMAGE_WIDTH','IMAGE_HEIGHT'), а также номер последней добавленной на страницу копии таблицы(под которой нажали плюс). Добавлено через 5 минут и 55 секунд Кратко говоря алгоритм такой: на старте есть несколько уникальных таблиц, сохраняем их структуру и первоначальные значения элементов ввода в шаблон(MULTI[ID]), далее чтобы создать еще один экземпляр какой-то таблицы, копируем шаблон соответствующий ей, проходим по всем необходимым нам ID в этой копии шаблона и меняем циферку в [] на значение Counts[ID], затем выводим копию шаблона, и прибавляем единицу к Counts[ID] |
| Автор: bars80080 29.12.2008, 15:08 |
| ну, сходу придумывается только некая рекурсивная функция пробегающая по всем потомкам и проверяющая, есть ли id, если есть то распарсивает и присваивает новый Добавлено через 1 минуту и 25 секунд .childNodes самое простое в этом случае. а id сидит прямо в x.id |
| Автор: 444ert666 29.12.2008, 15:10 |
| bars80080, Хм... чего тоя сразу не подумал о рекурсивной функции |
| Автор: 444ert666 12.1.2009, 22:12 | ||||
| Добрый вечер! Вопрос немного иной направленности, но всеж по этой теме. Как поменять имя уже созданного элемента в IE? Итак вот она функция, которая динамически меняет имена и id всех элементов в копиии таблицы, el - это копия таблицы(со всеми вложениями), а k - просто число.
Все работает и все хорошо. За исключением одного "НО", как всегда IE решил выделится вот эта строчка:
Не меняет аттрибут name элемента list[i] в IE..... В opera и firefox все отлично, Где то нарыл, что IE не позволяет менять имя уже созданного элемента. Так как тогда быть именно в моем случае? Заранее спасибо. |
| Автор: bars80080 13.1.2009, 02:12 |
| может через .setAttributte('name', 'newname'); попробовать? |
| Автор: 444ert666 13.1.2009, 10:10 |
| пробовал, не работает:(((( |