Автор Тема: Неработает меню  (Прочитано 2544 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн X-Disa

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
Неработает меню
« : 12 Августа 2006, 23:10:39 »
Решил сделать меню.

Написал вот такой скрипт.

Меню вызывается по событию например OnClick для когого-либо объекта на странице, obj_id - объект, вызвавший меню, menu_id - id div\'а в менюшкой. Как я понимаю, проблема с eventlistener\'ами, т.к. без них все работает и меню появляется. show_menu - показывает меню, hide_menu - его убирает, get_position - вычисляет положение объекта на странице, писал не я.

Поэтому два вопроса:
1. Как сделать чтобы оно работало :)
2. Меню появляется в левом верхнем углу вызванного объекта. Как сделать чтобы оно появлялось там, где кликнули?

Цитировать
var showed_menu_id = \'\';

function show_menu(obj_id,menu_id) {
  pos = get_position(document.getElementById(obj_id))
  x = pos.absLeft;
   y = pos.absTop;
  document.getElementById(menu_id).style.left = pos.absLeft+document.body.scrollLeft;
  document.getElementById(menu_id).style.top = pos.absTop+document.body.scrollTop;
  document.getElementById(menu_id).style.display = \'block\';
 
  parent.showed_menu_id = menu_id;
 
    document.addEventListener("click", hide_menu(),false);
   document.addEventListener("keypress", hide_menu(),false);
   document.addEventListener("keydown", hide_menu(),false);
 
}

function hide_menu() {
  document.getElementById(parent.showed_menu_id).style.display = \'none\';
}

function get_position(node) {
   var pos = new Object();

   pos.absLeft = pos.absTop = 0;

   var parentNode = node;
   while (parentNode) {
      pos.absLeft += parentNode.offsetLeft;
      pos.absTop += parentNode.offsetTop;

      parentNode = parentNode.offsetParent;
   }

   return pos;
};

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28