Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Выбор элементов и построение списка выбранных элементов. (https://javascript.ru/forum/events/3380-vybor-ehlementov-i-postroenie-spiska-vybrannykh-ehlementov.html)

madgals 14.04.2009 09:42

Выбор элементов и построение списка выбранных элементов.
 
Есть 3 таблица. 1 - слева, 2 - справа, 3 под ними.
В левой выбирается какой то элемент и содержимое появляется во 2й таблице. Когда во второй таблице мы щелкаем на строку - ее содержимое перемещается в 3ю таблицу. Т.е. теперь 3я таблица содержит одну строку, которая была выбрана во второй. И так постепенно таблица 3 заполняется. Внимание вопрос!

Как правильно заполнять 3ю таблицу ??
пример того, что мне нужно здесь

Моя наработка - здесь

Gvozd 14.04.2009 10:09

По поводу вашей наработки, не смог посмотреть, потому что после щелчка на списке(логика его появления мне непонятна), браузер вешается абсолютно.

Я так понимаю, по вашим словам, показывать во второй таблице товары в зависиомости от того, что в первой таблице вы уже научились?
И проблема только в заполнении третьей таблицы.
Например третью таблицу можно заполнять, просто перемещая туда туда соответсвующую строчку
table3.appendChild(elem)
//table3 - третья таблица
//elem - элемент, который надо переместить

Если строчку надо оставить во второй таблице, то лучше всего будет на лету создать новую строчку с необходимыми нам параметрами, и приатачить к третьей таблице
var new_elem=document.createElement('tr')
var td1=document.createElement('td')
td1.innerHTML=elem.cells[0].innerHTML
new_elem.appendChild(td1)
table3.appendChild(new_elem)
//table3 - третья таблица
//elem - элемент, который надо скопировать
// в данном случае в третью таблицу вставляется строчка с одной ячейкой-копией первой ячейки из второй таблицы

elem можно получить из обработчика события соответсвующей строки, а table3 любым из стандартных способов(например по id)

Для передачи на сервер обычным способом(формой), оборачиваем третью таблицу в форму, а в кажой строке храним скрытые input-ы в уникальным ID товара(ID не JS-овское, то, которое у вас на сервере в БД)

Riim 14.04.2009 10:21

Цитата:

Сообщение от Gvozd
то лучше всего будет на лету создать новую строчку с необходимыми нам параметрами, и приатачить к третьей таблице

Еще есть cloneNode:
Цитата:


Копирование: метод cloneNode()
Если мы хотим скопировать некоторый узел вместе со всеми его атрибутами, то надо воспользоваться методом cloneNode(). В качестве параметра метод принимает выражение типа Boolean. Если оно равно false, то копируется только тот узел, который активизирует метод. Если параметр метода равен true, то копируется узел вместе со всеми его потомками. Например, строка кода
var oClone = oList.cloneNode(true)
копирует в память всю ветвь дерева, начинающуюся на узле oList, то есть весь наш список целиком. Метод возвращает ссылку на копию узла. Используя эту ссылку, мы можем в дальнейшем работать с этой копией, например, отредактировать ее и вставить в документ.


madgals 14.04.2009 10:37

Вторая табличка формируется с помощью jsHttpRequest. А повисло все видимо потому, что я так чего то намудрил некоторое время назад. А за совет - спасибо ) попробую наваять ближайшее время.

madgals 14.04.2009 10:41

сейчас уже работает

Gvozd 14.04.2009 10:43

Цитата:

Сообщение от Riim
Еще есть cloneNode:

это была моя первая мысль.
но глянув выдачу гугла по этому поводу,я нашел довольно свежие посты о том, что он не работает адеrватно в IE
не вникая в детали(мало ли вдруг там куча народу просто ошибается, и на самом деле все отлично работает), я предпочел описать более кросбразуерный метод копирования, который не преподнесет сюрпризов, потому что мы сами можем определить что копируем. Тем самым я уберег нервы ТС-а от возни с кросбраузерностью и ослом.

Riim 14.04.2009 22:30

Я им даже ни разу не пользовался. Просто помню, что есть такой.


Часовой пояс GMT +3, время: 12:28.