Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2014, 08:27   #1
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию Аномалия с кодом. Не понятно что тварится. 12 строк кода

Всем привет.

Я Пытаюсь создать Drag&Drop для дива. Но с елементом что-то такое происходит, и его колбасит не по детски.

Не понятно от куда берутся вторые кординаты.


Вот тут можно посмотреть пример.


http://slavik.nl/public/js/draganddrop2/

Сам код js.

PHP код:
var allowDrag false;

function 
dragTrue(eelem){
    
allowDrag true;
}

function 
dragFalse(elem){
    
allowDrag false;
}
/* *************** */
var globalXoffset 0;
var 
globalYoffset 0;

function 
startDrag(eelem){
//__id('window-top-balk').innerHTML = elem.offsetLeft+' @ '+elem.style.marginLeft;
    
if(allowDrag){

        
elem.style.marginLeft = (e.clientX-parseInt(elem.style.marginLeft))+'px';
        
elem.style.marginTop  = (e.clientY-parseInt(elem.style.marginTop))+'px';
    }

<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 08.04.2014, 10:00   #2
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Как осуществляется вызов функции? Мало информации.

Но вы уверены, что вам нужен такой скрипт? Он ведь работает ужасно.
Почему бы не воспользоваться простым и готовым решением от jQuery?
ATL вне форума Ответить с цитированием
Старый 08.04.2014, 10:45   #3
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Вы лучше задайте position для перемещаемого элемента absolute или relative, и меняйте style.top и style.left. Такой эффект получается скорее всего из-за привязки к margin.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 08.04.2014, 19:16   #4
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Вы лучше задайте position для перемещаемого элемента absolute или relative,
Так и стоит. Пробовал и так и так. Один раз получилось удачно. Но только почему то при повторном перемещении елемента. Он опять оказывается по кординатам 0,0.

Вот это самый лучший вариант который мне удалось сделать.
Но и он работает не так как хотелось бы.

http://slavik.nl/public/js/draganddrop3/


Цитата:
и меняйте style.top и style.left.
Попробую.

Тут дело в том что один раз программа берет кординаты которые я сказал. Но потом появляются совершенно не понятно от куда еще одни. Потом проподают, и опять, и так далее :s
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 08.04.2014 в 19:21.
pompiduskus вне форума Ответить с цитированием
Старый 08.04.2014, 22:22   #5
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Во всяком случае логика верная.
Взгляните на рабочий вариант: http://jsfiddle.net/Fenex/M9D9q/
^-.-^ My GitHub

Последний раз редактировалось Fenex; 08.04.2014 в 22:26.
Fenex вне форума Ответить с цитированием
Старый 08.04.2014, 22:38   #6
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Во всяком случае логика верная.
Взгляните на рабочий вариант: http://jsfiddle.net/Fenex/M9D9q/
Очень хороший пример. Мне нужно было сразу строить объект. Я пошел чуть-чуть не тем путем. ))
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 09.04.2014, 23:10   #7
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Цитата:
Тут дело в том что один раз программа берет кординаты которые я сказал. Но потом появляются совершенно не понятно от куда еще одни. Потом проподают, и опять, и так далее :s
Программа выполняет то, что вы сказали ей делать, а вовсе не то, что вы от неё хотите

Присваиваете элементу значения сдвига равное позиции курсору минус этот же сдвиг. чтобы не скакал элемент - надо запоминать первый раз offset отдельно, подозревая для этого и были введены переменные globalYoffset\globalXoffset, которые нигде не используются.
Код:
elem.style.marginLeft = (e.clientX-parseInt(elem.style.marginLeft))+'px';
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 11.04.2014, 03:58   #8
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Присваиваете элементу значения сдвига равное позиции курсору минус этот же сдвиг. чтобы не скакал элемент - надо запоминать первый раз offset отдельно, подозревая для этого и были введены переменные globalYoffset\globalXoffset, которые нигде не используются.
Код:
elem.style.marginLeft = (e.clientX-parseInt(elem.style.marginLeft))+'px';
Все верно. Но в примере номер 3 она используется. Всем спасибо, разобрался.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi 7] Проблема с кодом - убрать из кода работу с INI файлов -Jack- Помощь студентам 2 25.05.2012 21:21
CMS DotNetNuke. Установил, что делать дальше вообще не понятно. Casper-SC Общие вопросы .NET 0 15.11.2010 14:51
Не понятно что с новым компом! Seman Компьютерное железо 19 07.11.2010 23:47
Не понятно что ему не нравится _ILYA_ Visual C++ 3 29.10.2010 20:25
Не понятно с кодом Михаил Юрьевич Общие вопросы Delphi 2 08.02.2008 08:07