Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   HELP ME левый верхний угол -почему меня ставят всё время в угол (https://javascript.ru/forum/events/14804-help-me-levyjj-verkhnijj-ugol-pochemu-menya-stavyat-vsjo-vremya-v-ugol.html)

point_msk 01.02.2011 12:48

HELP ME левый верхний угол -почему меня ставят всё время в угол
 
Пишу впервые потому прошу прощения за свои любые ошибки.



Программа составления рабочего графика.
При выборе сотрудника формируется строка таблицы из календарных дней месяца, в ней каждая ячейка соответствует числу месяца, по клику по выбраному дню вызывается функция которая смещает div position:absolute; в координатную точку курсора и делает его видимым display:block; в диве есть список добавления рабочей смены отбражаемой в выбраной ячейки после окончания работы функции.

при формировании ячеек документ расширяется в горизонтальной плоскости, появляется X_scrollbar
При добавлении № сотрудников документ расширятся в плоскости Y

Теперь глупый вопрос:
я смещаюсь посредством scrollbara в правый нижний угол выбираю крайнию правую ячейку кликаю по ней функция отрабатывается появляется div сменю выбора смены. И к моему сожалению экран возвращается в позицию левый верхний угол.
для того чтобы вновь вернутся к работе с меню нужно вручную смещать scrollbar (такой же эфект наблюдается при выполнеии любой фукции )
Хотел спросить как от этого можно избавится.

мыслей несколько.
1 отключить обработку дальнейшего события после вызова функции что бы для документа было бы не явным выполнение каких то действий и как следствие реакции по изменению видимой позиции отображения окна
2 передавать координаты положения div-меню, для отображения видимой части окна в нужных координатах.

Куски кода не чем не помогут но на всякий случай выкладываю.
помогите найти направление куда копать, надоело стоять вечно влевом углу.

for (index=0; index<DAYS_OF_MONTH; index++){
if( Calendar.getDate() > index )
{ var day = Calendar.getDate();
var data = ''+Calendar.getFullYear()+'-'+(Calendar.getMonth()+1)+'-'+Calendar.getDate()+'';
var quote = "'";

cal2 +='<td class=TD_work_day id=US_'+data+'_'+arguments[1]+' style="width:70px; height:150px;";><center><a href=# class=A_work_day id=TM_'+data+arguments[1]+' onclick="id_date('+arguments[1]+',\''+data+'\'); change_workday(this); " >'+day+'QQQQQQQQQQQQQQQQQQQQ</a></center></td>';


Calendar.setDate(Calendar.getDate()+1);
}}
cal2 += TR_work_day_end;



return cal2;




function change_workday(element)
{
var curleft = curtop = 0;
var offset = element.offsetHeight;
var el_width = element.offsetLeft + element.offsetWidth;
// alert(element.offsetParent);
if (element.offsetParent)
{
curleft = element.offsetLeft
curtop = element.offsetTop
while (element = element.offsetParent) {
curleft += element.offsetLeft
curtop += element.offsetTop
}
}
var popup = document.getElementById('cw');
popup.style.top = curtop + offset;
popup.style.left = curleft - el_width;
popup.style.display = 'block';
}



<div id=cw style=""><a id=close_cw href=# onclick="close_change_workday('cw')">X-Закрыть Окно-X</a><ul id=menu_change_workday><li><a href=# id=select_day onclick="add_day(idU,date,d_sm);">Выбрать день</a></li><li><a href=# onclick=del_day(idU,date,d_sm);>Удалить день</a></li><li><a href=# onclick="menu_cw_list(); add_menu_sm();">Выбрать смену</a> <ul id=cw_list style=""></ul> </li><li><a href=# onclick="add_menu_rs(); menu_rs_list();">Причина</a><ul id=rs_list></ul></li></ul></div> <!-- меню работы с выбраным днём-->

ksa 01.02.2011 13:02

Цитата:

Сообщение от point_msk
Хотел спросить как от этого можно избавится.

Как вариант наставить якорей и позиционироваться на них...

point_msk 01.02.2011 13:32

Спасибо за якорь.
 
Этот вариант хотел использовать в послед... очередь

point_msk 01.02.2011 13:49

Спасибо профессору
 
вы правы самое простое здесь это якорь.

Но если у кого ни будь есть другой вариант решения я буду благодарен за урок.

почему окно возвращалось в положние верхнийлевый угол?

Потому что я эээ(чЕшка) я же везде в сылках на которые вешал события по клику в href=# указал символ решетку, что указывало сылке искать якорь... а его нет

вопрос снят.

ksa 01.02.2011 14:12

Цитата:

Сообщение от point_msk
если у кого ни будь есть другой вариант решения я буду благодарен за урок

На этом форуме много чего есть...
http://javascript.ru/forum/misc/84-p...-stranicy.html

Набери в поисковой строке "скрол" - много чего еще найдёшь...

NoResponse 01.02.2011 22:27

во всех своих <a href=# сделай onclick="блабла; return false"

point_msk 08.02.2011 10:36

к предыдущему посту
 
В сылке в поле href указываем href="javascript:void(0)"
получаем тот же результат как onclick=func(); return false;
Сылка не производит переход, и не совершает никаких действий кроме описаных в onclick и тп.


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