Javascript.RU

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

Нужна помощь для реализации функции d'n'd
Доброго времени! У меня есть такая задача : есть текст, оформленный в виде нескольких блоков (<div></div>) а так же есть картинка. Необходимо чтобы при перетаскивании этой картинки на какой - то из блоков текста и отпускании картинки он менял свои стилевые свойства (шрифт например). Я нашел вроде рабочий пример d'n'd и изменил там одну функцию, которая отвечает за начало инициализации движения. Потом попыталя сделать так, чтобы при наведении картинки на блок и отпускании кнопки мыши текст менял размер шрифта, но что то не получается. Помогите пожалуйста. Листинг вот:
<html>
<head>
<title>DaD</title>
<script>
// Объявим глобальные переменные
// Переменная состояния, по умолчанию ничего не двигается = false
var moveState = false;
// Переменные координат мыши в начале перемещения, пока неизвестны
var x0, y0;
// Начальные координаты элемента, пока неизвестны
var divX0, divY0;

//это картинка тоже в отдельном блоке
// Добавим прямо в DIV обработчики событий
document.write(
    "<div id=a\
        style='position:absolute;left:50;top:50;' \
        onmousedown = 'initMove(this, event);' \
        onmouseup = 'StartLocation(this);' \
        onmousemove = 'moveHandler(this, event);' \
    ><img src=font_n.jpg name=a></div>"
);

// Объявим функцию для определения координат мыши
function defPosition(event) {
    var x = y = 0;
    if (document.attachEvent != null) { 
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    return {x:x, y:y};
}



// Функция инициализации движения
// Записываем всё параметры начального состояния
function initMove(div, event) {
    var event = event || window.event;
    x0 = defPosition(event).x;
    y0 = defPosition(event).y;
    divX0 = 50;
    divY0 = 50;
    moveState = true;
}
//тут я добавил сам
// Если клавишу мыши отпустили вне элемента движение должно прекратиться
 function StartLocation(div) {
//здесь картинка возвращается на исходное место 
    divX0 = 50;
    divY0 = 50;
    div.style.left=divX0;
    div.style.top=divY0;
    moveState = false;
//эта функция как я понимаю должна возвраитить id элемента на котром произошло событие 
    var eid=window.event.srcElement.id;
//эта функция изменяет шрифт на 16
    document.getElementbyId(eid).fontsize="16";
}


// Функция обработки движения:
function moveHandler(div, event) {
    var event = event || window.event;
    if (moveState) {
        div.style.left = divX0 + defPosition(event).x - x0;
        div.style.top  = divY0 + defPosition(event).y - y0;
    }
}
</script>
</head>
<body>

<br>
<br>
<br>
<br>
<br>
<br>
<br>
//здесь определяем что по отпускании нажатой левой кнопки мыши я 
//вызываю функцию StartLocation
<div id="1" onmouseup="StartLocation(this.id);"><dd>
Имя Андрея Поздеева относится к наиболее значительным в истории русского искусства ХХ столетия. Это тем более важно понять, так как Андрей Поздеев не принадлежал к столичному кругу авангарда 60 - 80-х годов, а следовательно, не имел такой художественной среды, в которой вольно или невольно прокручиваются близкие творческие идеи, имеется круг почитателей, способных поддерживать художника, раскручивать его имя и создавать условия для развития.
</div>

<div id="2" onmouseup="StartLocation(this.id);" ><dd>
Андрей Поздеев - коренной сибиряк.  Среди его предков были кузнецы и столяры, один из прадедов был ссыльным поляком. Андрей Геннадьевич Поздеев родился 27 сентября 1926 года в селе Нижний Ингаш Красноярского края в семье почтового служащего Поздеева Геннадия Даниловича и его жены Евдокии Ивановны.
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2010, 16:58
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Цитата:
но что то не получается
А что именно то не получается?
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2010, 17:00
Новичок на форуме
Отправить личное сообщение для vaal Посмотреть профиль Найти все сообщения от vaal
 
Регистрация: 09.06.2010
Сообщений: 3

при наведении картинки и отпускании нажатой левой кнопки мыши текст не меняет шрифт. Это я реализовывал в функции StartLocation, посмотрите может так что неправильно или не хватает чего - нибудь.
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2010, 17:13
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

правильно не меняет onmouseup срабатывает на картинке, а не на div
__________________
.
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2010, 17:27
Новичок на форуме
Отправить личное сообщение для vaal Посмотреть профиль Найти все сообщения от vaal
 
Регистрация: 09.06.2010
Сообщений: 3

Понял. А как перехватить еще и id div'a текста? Просто никаких мыслей в голову не приходит тогда получается где не отпускай у меня все равно onmousemove будет на картинке срабатывать а не на тесте, так как курсор на картинке находился. У меня была идея если при отпускании клавиши запоминать координаты мыши и в зависимости от координат просто менять стилевые свойства элемента, если координаты мыши попадут под диапазон его координат. НО это ведь тогда получается что и в d'n'd смысла нет, и замудрено сильно. Помогите может кто сталкивался с такой задачей.

Последний раз редактировалось vaal, 09.06.2010 в 17:29. Причина: забыл добавить
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна помощь Sergiy Серверные языки и технологии 2 31.03.2010 20:16
Помощь в реализации и оптимизации (слои, картинки, анимация) kain Общие вопросы Javascript 1 29.03.2010 18:22
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17
нужна программа для этого. Чем писать? javascript или php? spam-server Серверные языки и технологии 3 27.08.2009 00:52
Проверка существования входного параметра для функции Axe Я не знаю javascript 2 25.05.2009 14:58