Решил сделать меню.
Написал вот такой скрипт.
Меню вызывается по событию например 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;
};