Создание внутреннего дива
Доброго времени суток, уважаемые форумчане!
столкнулась с такой проблемой: есть картинка. по выделению области, как только пользователь отпустит мышь(т.е. на событие 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;
}
}
|
веснушка, заранее создайте div и помещайте туда соответствующие данные...
или div должен быть поверх страницы? |
поверх страницы. заранее нельзя создать, как я поняла.
а именно при 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 = "";
}
|
если не затруднит, подскажите, как сделать так, чтобы этот див появлялся в том месте, где была отпущена кнопка мыши?
и такой вопросик: если при клике на этот див у меня должен выпадать список, то это делать внутри функции showText? |
Цитата:
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;
}
}
автор скрипта наверняка придумает решение получше... Цитата:
нужен select внутри div-a? нарисуйте его там чтобы div не закрывался по нажатию на нем закоментируйте следующую строку
newdiv.onclick = function() { this.style.display = "none"; }
и создайте на div-e кнопку или картинку насобытие onClick которого(-ой) повесьте закоментированную функцию |
веснушка,
смотрите решение в прошлой своей теме: http://javascript.ru/forum/dom-windo...tml#post188351 я добавил туда всплывающее окошко. |
только у вас всплывающее окно все время в середине изображения, а нужно там, где была отпущена кнопка мыши(
просто у моего изображения есть полоса прокрутки, т.к. оно большое(так нужно по условию) и получается, что окно всплывает где-то далеко и надо прокрутить бегунок, чтобы его найти |
веснушка,
смотрите теперь, туда же в ту тему. |
devote,
простите, я вас совсем уже замучила, но есть еще вопрос( если нужно на onmouseclick всплывающего окна повесить другую картинку, которая отобразиться в том же окне поверх прежней? |
| Часовой пояс GMT +3, время: 03:54. |