Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема со скриптом в IE (https://javascript.ru/forum/dom-window/5663-problema-so-skriptom-v-ie.html)

Чайник 29.10.2009 12:59

Проблема со скриптом в IE
 
Проблема такого рода: Есть вертикальное выпадающее меню которое написано на CSS. для корректного отображения в IE (в других браузерах все работает и без скрипта) используется ява-скрипт. Меню вызывается 3 раза. В первый раз все ОК. В последующих случаях меню не раскрывается ((.

B~Vladi 29.10.2009 14:59

Телепаты в отпуске. Где код?!

Чайник 29.10.2009 15:43

это код JS:

navHover1 = function() {
	var lis = document.getElementById("navmenu-v1").getElementsByTagName("LI");
	for (var c=0; c<lis.length; c++) {
		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", navHover1);


Это само меню:

<ul id="navmenu-v"> 
    <li><a href="#">бельевой</a> 
    <ul>
       <li><a href="index.php?page=tovar&sub=women_niz1" class="links_meny_pravo">сорочки</a></li> 
        <li><a href="index.php?page=tovar&sub=women_niz2" class="links_meny_pravo">пижамы</a></li>
        <li><a href="index.php?page=tovar&sub=women_niz4" class="links_meny_pravo">халаты</a></li>
        <li><a href="index.php?page=tovar&sub=women_niz3" class="links_meny_pravo">комплекты</a></li> 
        </ul></li>

<li><a href="#">верхний</a> 
      <ul> 
        <li><a href="index.php?page=tovar&sub=women_verh1" class="links_meny_pravo">костюмы</a></li> 
        <li><a href="index.php?page=tovar&sub=women_verh2" class="links_meny_pravo">джемпера</a></li> 
        <li><a href="index.php?page=tovar&sub=women_verh3" class="links_meny_pravo">сарафаны и платья</a></li> 
        </ul> 
        </li>
</ul>


Это вызывается 3 раза. Первый раз раскрывается и дальше нет.

B~Vladi 29.10.2009 15:50

this.className=this.className.replace(' iehover', '');

Похоже у тебя не заменяется класс.

Чайник 29.10.2009 16:02

Простите бестолкового.... ((( куда надо вставить???

B~Vladi 29.10.2009 16:08

Твою строку
this.className=this.className.replace(new RegExp(" iehover\\b"), "");

заменить на мою.

Чайник 29.10.2009 16:13

Эффект тот же (

B~Vladi 29.10.2009 16:18

В ишаке, в обработчике события this указывает не на элемент, а на window.

Попробуй так:

navHover1 = function() {
    var lis = document.getElementById("navmenu-v1").getElementsByTagName("LI");
    for (var c=0; c<lis.length; c++) {
        lis[c].onmouseover=(function(ele) {
            return function(){ele.className+=" iehover";}
        })(lis[c]);
        lis[c].onmouseout=(function(ele) {
            return function(){ele.className=ele.className.replace(' iehover', '');}
        })(lis[c]);
    }
}

B~Vladi 29.10.2009 16:27

Заметь, у тебя счётчик - с, а подставляешь ты i. Будь внимательнее.

Чайник 29.10.2009 16:39

вообще не одно меню не раскрывается (


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