Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.08.2011, 12:33
Новичок на форуме
Отправить личное сообщение для Molen Посмотреть профиль Найти все сообщения от Molen
 
Регистрация: 31.08.2011
Сообщений: 7

Генерация списка из DIV'ов
Приветствую всех.
Решил обратиться на форум, ибо уже второй день не могу сообразить, как мне реализовать свои задумки.
В данный момент времени изучать js и jquery нету, по этому прошу помочь мне.


Описание мыслей:

Есть пример работы одного js скрипта основанного на drag&drop системе. Сам скрипт можно глянуть тут: _http://www.dhtmlgoodies.com/scripts/drag-drop-custom/demo-drag-drop-3.html
В ходе работы со страничкой, пользователь перетаскивает блоки(обычные DIV'ы с персональными идентификаторами) с названиями столиц в блоки(опять же DIV'ы, каждый со своим идентификатором) с названиями государств. Пример скрипта заключается в сравнении, правильно ли пользователь выбрал столицу государства, меня же этот пункт не интересует, его я вырежу без проблем.

Как я понимаю, после перетаскивания в следующие блоки с названием государств:


<div id="countries">
			<div id="kingdom_1" class="dragableBoxRight">Italy<div class="dragableBox" id="box1">Oslo</div></div>
			<div id="kingdom_2" class="dragableBoxRight">Spain</div>
			<div id="kingdom_3" class="dragableBoxRight">Norway</div>
			<div id="kingdom_4" class="dragableBoxRight">Denmark</div>
			<div id="kingdom_5" class="dragableBoxRight">South Korea</div>
			<div id="kingdom_6" class="dragableBoxRight">Sweden</div>
			<div id="kingdom_7" class="dragableBoxRight">United States</div>
		</div>


Самих блоков с названиями столиц:

<div id="dropContent">
				<div class="dragableBox" id="box1">Oslo</div>
				<div class="dragableBox" id="box2">Stockholm</div>
				<div class="dragableBox" id="box3">Washington</div>
				<div class="dragableBox" id="box4">Copenhagen</div>
				<div class="dragableBox" id="box5">Seoul</div>
				<div class="dragableBox" id="box6">Rome</div>
				<div class="dragableBox" id="box7">Madrid</div>
			</div>


Код грубо говоря выглядит примерно так:

<div id="countries">
			<div id="box106" class="dragableBoxRight">Italy <div class="dragableBox" id="box1">Oslo</div> </div>
			<div id="box107" class="dragableBoxRight">Spain <div class="dragableBox" id="box2">Stockholm</div> </div>
			<div id="box101" class="dragableBoxRight">Norway <div class="dragableBox" id="box3">Washington</div> </div>
			<div id="box104" class="dragableBoxRight">Denmark <div class="dragableBox" id="box4">Copenhagen</div> </div>
			<div id="box105" class="dragableBoxRight">South Korea <div class="dragableBox" id="box5">Seoul</div> </div>
			<div id="box102" class="dragableBoxRight">Sweden <div class="dragableBox" id="box6">Rome</div> </div>
			<div id="box103" class="dragableBoxRight">United States <div class="dragableBox" id="box7">Madrid</div> </div>
		</div>

________

Теперь же мне нужно отправить в свой php обработчик строку с данными, с которой я смогу работать. На вид строки мне наплевать, с ней я смогу извратиться, как угодно.
Суть лишь в том, что мне нужно исходя из предыдущего примера, получить, что-то, такое:

box106=box1&box107=box2&box101=box3&box104=box4&box105=box5&box102=box6&box103=box7


То есть я должен получить информацию, о том, какому государству, какую столицу присвоил пользователь.
Далее на кнопку вешаю обработчик, на подобие:


var order = "box106=box1&box107=box2&box101=box3&box104=box4&box105=box5&box102=box6&box103=box7";
$.post("updateIn.php", order, function(theResponse){
$("#contentRight").html(theResponse); // Вставка ответа с сервера в div c id="contentRight"
});


Мой php скрипт обработает эту строку, разобьёт все параметры, затолкает их в базу, извратится с ними, обмажет соусом, да пофигу, что ещё.
Вся соль в том, что мои знания js на безумно низком уровне, и я не понимаю, как можно перебрать id div'ов в другом div'е

Нужно сделать обработку всех div'ов в div'e #countries, после беглых взглядом по jquery, напрашивается, что-то, типа:
!(Я не знаю js, написанное ниже скорее всего, полный бред)
$(#countries).find("DIV").id

или
function Trololo()
{
var difx = document.getElementsById('countries');
var objects = difx.getElementsByTagName('div');
for(var i=0;i<objects.length;i++){
//тут, какая-то обработка
}
}

_____
Надеюсь, смог собраться кашу образовавшуюся в голове в более-менее восприимчивую форму. Если возникнут вопросы или непонимания, отписывайтесь, отвечу по возможности быстро.

В итоге нужно сделать скрипт на js, jquery, который будет формировать мне строку вида:
box106=box1&box107=box2&box101=box3&box104=box4&box105=box5&box102=box6&box103=box7

Последний раз редактировалось Molen, 31.08.2011 в 12:37.
Ответить с цитированием
  #2 (permalink)  
Старый 31.08.2011, 13:08
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Если JQuery то:
var str = [];
$('#countries div.dragableBoxRight').each(function() {
  str.push($(this).attr('id')+'='+$('div.dragableBox', this).attr('id'));
});
str = str.join('&');
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 31.08.2011, 15:05
Новичок на форуме
Отправить личное сообщение для Molen Посмотреть профиль Найти все сообщения от Molen
 
Регистрация: 31.08.2011
Сообщений: 7

К сожалению полностью не понимаю принципа работы функции, но своего добился. Полезу в учебник, что бы разобраться во всём.

Кстати, очень удобно, что можно указать свой разделитель, это очень поможет при формировании строки.
str = str.join('&');

В общем, большое спасибо за помощь, надо было не мучить себя, а сразу отписать на форуме.
Напоследок вопрос, для тех, кто ещё заглянет в тему:
Бытует мнение, что лучше начинать изучение с jquery, так вот, правда ли это? Или лучше начинать с обычного js, а уже после его освоения, переходить на на jquery?
Ответить с цитированием
  #4 (permalink)  
Старый 31.08.2011, 15:09
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

walik, ну зачем?
$(this).attr('id')

если можно просто
this.id

...
вопрос адресован не только тебе, а ко многочисленным девелоперам, которые так же пишут

хочу узнать, нафига.
Ответить с цитированием
  #5 (permalink)  
Старый 31.08.2011, 16:57
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

walik,
зачем each, когда есть map
var str = $('#countries>div.dragableBoxRight').map(function() {
  var div = this.getElementsByTagName("div");
  if ( 0 in div ) {
    return encodeURIComponent(this.id) + '=' + encodeURIComponent(div[0].id);
  }
}).get().join('&').replace(/%20/g, "+");
Ответить с цитированием
  #6 (permalink)  
Старый 31.08.2011, 17:56
Новичок на форуме
Отправить личное сообщение для Molen Посмотреть профиль Найти все сообщения от Molen
 
Регистрация: 31.08.2011
Сообщений: 7

Спасибо за различные решения, скрипт почти закончил, теперь всё отлично работает.
И я так понял, меняя "$(this).attr('id')" на "this.id" мы выполняем то же действие, просто по средствам стандартного js без использования jquery ?
Ответить с цитированием
  #7 (permalink)  
Старый 31.08.2011, 20:30
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от melky
walik, ну зачем?
Привычка)) если узаю JQ то уже тогда юзаю все его функции))
+Привычка работать с атрибутами юзая get/setAttribute

Сообщение от nikita.mmf
walik,
зачем each, когда есть map
По сути еще никогда не юзал эту функцию и особо не вникал что она делает)) поэтому и обхожусь циклами)


Сообщение от Molen
Бытует мнение, что лучше начинать изучение с jquery, так вот, правда ли это? Или лучше начинать с обычного js, а уже после его освоения, переходить на на jquery?
По мне как, естественно что нормально это в начале выучить JS а потом уже по необходимости JQuery (или может тогда уже на другой фремворк подсядете, все бывает)
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #8 (permalink)  
Старый 31.08.2011, 21:21
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

А вот я не очень понял, как работает скрипт в примере. Кто отвечает за анимацию Drag&Drop? DHTML? А что это за технология, как её использовать?) Я при беглом просмотре увидел лишь обычный HTML, обычный CSS и вполне понятный JS код, создающий правда некий специальный объект. А как работает замечательное движение блоков, я так и не понял...

Объясните чайнику)
Ответить с цитированием
  #9 (permalink)  
Старый 31.08.2011, 21:54
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

все реализуется в jquery ui
Ответить с цитированием
  #10 (permalink)  
Старый 31.08.2011, 21:58
Новичок на форуме
Отправить личное сообщение для Molen Посмотреть профиль Найти все сообщения от Molen
 
Регистрация: 31.08.2011
Сообщений: 7

popov654, гляньте в загружаемый скрипт, там всё закоментировано и более-менее разобраны основные функции.
http://www.dhtmlgoodies.com/scripts/...drop-custom.js
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подбор варианта из списка select при наборе текста omvitamin Элементы интерфейса 6 04.04.2011 14:48
Генерация раскрывающегося списка из XML данных Hag1989 Работа 13 28.02.2011 14:04
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40
Sortable, два связанных списка. Как один из них сделать неизменяемым? kvecxjo jQuery 1 30.03.2010 03:15
Динамическое обновление списка select (продолжение мытарств) macam Элементы интерфейса 2 25.06.2008 16:04