Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Вопрос по JS (https://javascript.ru/forum/offtopic/10132-vopros-po-js.html)

htaccess 20.06.2010 23:48

Вопрос по JS
 
Доброго вам времени суток! В javascript я чайник, но стараюсь его изучать. И вот такая проблемка, вот код :
<html>
<head>
<script>
function mousePageXY(e){
var x = 0, y = 0;
x = e.clientX;
y = e.clientY;
return {"x":x, "y":y};
}
var stop;
var iddiv;
function move_am(stop,iddiv){
px1 = document.getElementById(iddiv).style.left
py1 = document.getElementById(iddiv).style.top
document.onmousemove = function(e){
var mCur = mousePageXY(e);
tox = mCur.x
toy = mCur.y
gepox = (tox - parseInt(px1))
gepoy = (toy - parseInt(py1))
document.getElementById(iddiv).innerHTML = 'X : '+gepox+' Y : '+gepoy
if (stop == "ask"){
var lfet = document.getElementById(iddiv).style.left
var tfet = document.getElementById(iddiv).style.top
document.getElementById(iddiv).style.left = lfet
document.getElementById(iddiv).style.top = tfet
} else {
document.getElementById(iddiv).style.left = gepox
document.getElementById(iddiv).style.top = gepoy
}
}
}
</script>
</head>
<body>

<div style="position: absolute; width: 100px; height: 100px;background-color: #808080; border-top:20px solid;left:37px; top:26px" onMouseDown="move_am('lol',this.id)" onclick="move_am('ask',this.id)"  id="layer1">
&nbsp;</div>

</body>
</html>

Здесь на экране появляется слой и при нажатии на него левой кнопкой мыши, слой должен перемещаться за ней, после отпускания клавиши мыши слой останавливается и сохраняет свою позицию.
И есть одно "но", после завершения перемещения слоя, координаты мыши начинают подсчитываться относительно слоя, а не относительно документа.
Как этого избежать?
Пожалуйста, объясните по подробнее, и прошу без таких фраз как "гугл в помощь", "библиотека рулит" или "вот же есть готовый скрипт - юзай".
Жду)

Kolyaj 21.06.2010 08:17

http://javascript.ru/ui/draganddrop

htaccess 21.06.2010 08:34

Знаю я эту тему, а по моей ничего не по советуете?

рони 21.06.2010 08:51

координаты мыши от твоего скрипта не меняються!!!
если ты ориентируешься на свой вывод
document.getElementById(iddiv).innerHTML = 'X : '+gepox+' Y : '+gepoy

то он у тебя показывает смещение курсора относительно дива
gepox = (tox - parseInt(px1))  
 gepoy = (toy - parseInt(py1))

onclick="move_am('ask',this.id)" - это обновляет параметры px1 py1 и относительно их новых показаний выводиться твоё сообщение после "остановки"
а это вобще из разряда масло масляное
var lfet = document.getElementById(iddiv).style.left  

 var tfet = document.getElementById(iddiv).style.top  

document.getElementById(iddiv).style.left = lfet  

document.getElementById(iddiv).style.top = tfet

htaccess 21.06.2010 09:10

Ну ведь остановить как то надо
var lfet = document.getElementById(iddiv).style.left 
 
 var tfet = document.getElementById(iddiv).style.top 
 
document.getElementById(iddiv).style.left = lfet 
 
document.getElementById(iddiv).style.top = tfet

htaccess 21.06.2010 09:11

Мой скрипт можно как нить поправить? Чтобы элементы правильно двигались?

Kolyaj 21.06.2010 09:36

htaccess,
по drag'n'drop тонны статей написано, почитайте, и поймёте, в чём у вас ошибка.

htaccess 21.06.2010 09:39

Ребят, можете скинуть готовый рабочий скрипт, где будет нормально перемещаться хотябы 1 div ? Вот только тапками кидаться не надо.

Kolyaj 21.06.2010 09:54

Вы поиском принципиально не пользуетесь?
http://yandex.ru/yandsearch?text=%D1...fx3&clid=46510

htaccess 21.06.2010 10:13

Мне нужен пример, а не чей то скрипт, где куча всяких левых функций и тупо скопированных статей с других сайтов.
Кстати, я всё сам доделал. Всем спс, кто отозвался.


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