Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Меню Onclick (https://javascript.ru/forum/dom-window/1519-menyu-onclick.html)

Levin 06.08.2008 10:57

Меню Onclick
 
Как можно исправить меню выстроенное по событию onmouseover на меню раскрывающееся по клику, причем 2 и 3 подуровни ТОЖЕ ДОЛЖНЫ ОТКРЫВАТЬСЯ ПО КЛИКУ.
листинг :-)

navHover = function() {
	var lis = document.getElementById("navmenu").getElementsByTagName("LI");
	for (var i=0; i<lis.length; i++) {
		lis[i].onmouseover=function() {
			this.className+=" iehover";
		}
		lis[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", navHover);

ZoNT 06.08.2008 11:15

onmouseover заменить на onclick :)

Levin 06.08.2008 13:41

Не все так просто, пробовал, в этом случае старые уже открытые элементы не закрываются, получается черти что.

ZoNT 06.08.2008 14:00

ну так в вопросе же было "на меню раскрывающееся по клику"
На закрывающееся по второму клику - в вопросе не было!

Учитесь правильно формулировать вопросы!!!

Levin 06.08.2008 14:30

причем 2 и 3 подуровни ТОЖЕ ДОЛЖНЫ ОТКРЫВАТЬСЯ ПО КЛИКУ.
(см. 1 сообщение темы).
Ладно, по существу, самому мне кажется что варианта нет, по крайней мере я не знаю.
Отсюда другой вопрос:
- как прописать в файле css (к этому меню), что бы меню усчезало не сразу после отвода мышки, а была задержка, т.к. проблема появилась из-за того, что меню исчезает сразу как убрали мышку, а менюха многоуровневая, большая.

ZoNT 06.08.2008 14:56

navHover = function() {
var lis = document.getElementById("navmenu").getElementsByTagName("LI");
for (var i=0,l=is.length; i<l; i++) {
  lis[i].onclick=function() {
    var reg = /iehover$/;
    if (reg.test(this.className))
      this.className=this.className.replace(reg, "");
    else this.className+=" iehover";
  }
}
}
if (window.attachEvent) window.attachEvent("onload", navHover);

Levin 06.08.2008 15:13

Цитата:

Сообщение от ZoNT (Сообщение 4221)
for (var i=0,l=is.length; i<l; i++) {

В условии точно все верно?

ZoNT 06.08.2008 16:06

for (var i=0,l=lis.length; i<l; i++) {

естественно lis, а не is

Levin 06.08.2008 18:14

Блин, все вроде написано правильно и красиво, просмотрел вроде все отлично выглядит, а на деле как то ничего не происходит, меню вообще не реагирует

ZoNT 06.08.2008 18:33

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


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