Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2012, 15:38
Аспирант
Отправить личное сообщение для веснушка Посмотреть профиль Найти все сообщения от веснушка
 
Регистрация: 12.07.2012
Сообщений: 35

Создание внутреннего дива
Доброго времени суток, уважаемые форумчане!
столкнулась с такой проблемой:
есть картинка. по выделению области, как только пользователь отпустит мышь(т.е. на событие onmouseup) должен создаться новый див, в котором будут данные о выделенной области. просто alert не подходит
document.onmouseup = function() {
if ( activeImage ) {

var iRect = activeImage.getBoundingClientRect();
var sRect = activeSelection.getBoundingClientRect();

var X = ( sRect.left < startX ? sRect.left : startX ) - iRect.left;
var Y = ( sRect.top < startY ? sRect.top : startY ) - iRect.top;


activeSelection.innerHTML = '<div style='color:red; background-color: blue'>text</div>';

/*alert( [

'X: ' + X,
'Y: ' + Y,
'W: ' + activeSelection.offsetWidth,
'H: ' + activeSelection.offsetHeight
].join('\n') );*/
// ------------------------------


if ( activeSelection.parentNode ) {
activeSelection.parentNode.removeChild( activeSelection );
activeSelection.style.width = '0';
activeSelection.style.height = '0';
}
activeImage = null;
}
}
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2012, 15:45
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

веснушка, заранее создайте div и помещайте туда соответствующие данные...
или div должен быть поверх страницы?
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2012, 15:47
Аспирант
Отправить личное сообщение для веснушка Посмотреть профиль Найти все сообщения от веснушка
 
Регистрация: 12.07.2012
Сообщений: 35

поверх страницы. заранее нельзя создать, как я поняла.
а именно при mouseup его нужно создать и поместить туда данные
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2012, 16:05
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от веснушка Посмотреть сообщение
поверх страницы. заранее нельзя создать, как я поняла.
а именно при mouseup его нужно создать и поместить туда данные
function showTxt(content){
	newdiv = document.createElement('div');      
	newdiv.setAttribute('id', 'Div');      
	newdiv.onclick = function() { this.style.display = "none";};
	with (newdiv.style) {
		position="absolute";
		top="140px";
		left="100px";
		border="1px solid black";
		backgroundColor="#fff";
	}
	document.body.appendChild(newdiv);     
	newdiv.innerHTML = content; 
	newdiv.style.display = "";
}
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2012, 17:17
Аспирант
Отправить личное сообщение для веснушка Посмотреть профиль Найти все сообщения от веснушка
 
Регистрация: 12.07.2012
Сообщений: 35

если не затруднит, подскажите, как сделать так, чтобы этот див появлялся в том месте, где была отпущена кнопка мыши?

и такой вопросик: если при клике на этот див у меня должен выпадать список, то это делать внутри функции showText?
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2012, 17:37
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от веснушка Посмотреть сообщение
если не затруднит, подскажите, как сделать так, чтобы этот див появлялся в том месте, где была отпущена кнопка мыши?
как то так
document.onmouseup = function(e) {
            if ( activeImage ) {
 
                var iRect = activeImage.getBoundingClientRect();
                var sRect = activeSelection.getBoundingClientRect();
 
                var shift = shiftScroll();
                var X = ( sRect.left + shift.X < startX ? sRect.left + shift.X : startX ) - iRect.left - shift.X;
                var Y = ( sRect.top + shift.Y < startY ? sRect.top + shift.Y : startY ) - iRect.top - shift.Y;
 
                e = fixEvent( e );
 
                var shift = shiftScroll();
                var rect = activeImage.getBoundingClientRect();
 
                var X1 = Math.max( e.pageX > startX ? startX : e.pageX, rect.left );
                var Y1 = Math.max( e.pageY > startY ? startY : e.pageY, rect.top );
                var W1 = Math.min( Math.abs( Math.max( X, e.pageX ) - startX ), rect.right + shift.X - X );
                var H1 = Math.min( Math.abs( Math.max( Y, e.pageY ) - startY ), rect.bottom + shift.Y - Y );
 
                // тут что-то открываем, делаем
                // ....
                /*alert( [
                    "src: " + activeImage.src + "\n",
                    "X: " + X,
                    "Y: " + Y,
                    "W: " + activeSelection.offsetWidth,
                    "H: " + activeSelection.offsetHeight
                ].join("\n") );*/
		showTxt([
                    "src: " + activeImage.src + "<br>",
                    "X: " + X + "<br>",
                    "Y: " + Y + "<br>",
                    "W: " + activeSelection.offsetWidth + "<br>",
                    "H: " + activeSelection.offsetHeight + "<br>"
                ], X1+W1, Y1+H1);
                // ------------------------------
 
                if ( activeSelection.parentNode ) {
                    activeSelection.parentNode.removeChild( activeSelection );
                    activeSelection.style.width = "0";
                    activeSelection.style.height = "0";
                }
                activeImage = null;
            }
        }


автор скрипта наверняка придумает решение получше...

Сообщение от веснушка Посмотреть сообщение
и такой вопросик: если при клике на этот див у меня должен выпадать список, то это делать внутри функции showText?
не совсем понятна задача...
нужен select внутри div-a? нарисуйте его там
чтобы div не закрывался по нажатию на нем закоментируйте следующую строку
newdiv.onclick = function() { this.style.display = "none"; }

и создайте на div-e кнопку или картинку насобытие onClick которого(-ой) повесьте закоментированную функцию

Последний раз редактировалось lord2kim, 18.07.2012 в 12:58.
Ответить с цитированием
  #7 (permalink)  
Старый 17.07.2012, 21:57
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

веснушка,
смотрите решение в прошлой своей теме: Обработка событий мыши при выделении области картинки я добавил туда всплывающее окошко.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 18.07.2012, 10:26
Аспирант
Отправить личное сообщение для веснушка Посмотреть профиль Найти все сообщения от веснушка
 
Регистрация: 12.07.2012
Сообщений: 35

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

Последний раз редактировалось веснушка, 18.07.2012 в 10:30. Причина: уточнение
Ответить с цитированием
  #9 (permalink)  
Старый 18.07.2012, 11:11
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

веснушка,
смотрите теперь, туда же в ту тему.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #10 (permalink)  
Старый 18.07.2012, 12:16
Аспирант
Отправить личное сообщение для веснушка Посмотреть профиль Найти все сообщения от веснушка
 
Регистрация: 12.07.2012
Сообщений: 35

devote,
простите, я вас совсем уже замучила, но есть еще вопрос(
если нужно на onmouseclick всплывающего окна повесить другую картинку, которая отобразиться в том же окне поверх прежней?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание скрипта "Итеррационные циклы" по формуле krasopetka Общие вопросы Javascript 0 17.11.2011 12:42
padding-left увеличивает ширину дива cmygeHm (X)HTML/CSS 4 26.05.2011 00:45
Создание меню подскажите KonstantinK jQuery 2 11.04.2011 19:33
Срезание дива по диагонали Acrossfy jQuery 15 15.10.2010 11:00
Создание скрипта! Создание диктанта для учеников! Елизавета Работа 10 30.06.2010 21:00