Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: X-Disa от 12 Августа 2006, 23:10:39

Название: Неработает меню
Отправлено: X-Disa от 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;
};