Code: function act(e) { var aim = e.target || e.srcElement, blocks = document.getElementById('buttons').getElementsByTagName('img'), l = blocks.length, while(l--) blocks[l].className = 'normal'; aim.className = 'active'; когдато астрологер мне помог: скрпитик написал что клас меняло.. так вот там тег имж. нада что у него атрибут Code: src="images/but.png" поменяло на Code: src="images/butActive.png" как дойти до этого атрибуто приблизительно вкурсе (фаербаг рулит) но дальше там строки штоле. штоб после 4 символа сконца дописать Актив
Code: startList = function() { if (document.all&&document.getElementById) { navRoot = document.getElementById("nav"); for (i=0; i<navRoot.childNodes.length; i++) { node = navRoot.childNodes[i]; if (node.nodeName=="LI") { node.onmouseover=function() { this.className+=" over"; } node.onmouseout=function() { this.className=this.className.replace(" over", ""); } } } } } window.onload=startList; Code: <ul id="nav"> <li class=""><a href="#">Home</a></li> <li class=""><a href="#">About</a> <ul> <li><a href="#">History</a></li> <li><a href="#">Team</a></li> <li><a href="#">Offices</a></li> </ul> </ul> Ачо оно не работает
1) Выражение Boolean(document.all) в браузерах FF2.0+, Safari, Opera 9.5 (build 9755+) возвращает ложь из-за маскировки этого объекта. (В приведённом примере document.all не используется, но зачем-то проверяется. Копипаст?) 2) Структура списка неправильная. 3) Не используется ключевое слово var, из-за этого все переменные определяются как глобальные. 4) В списке только ссылки, значит, можно обойтись без JS (a:hover).
да) да.. просто он длиннее. вот теперь правильная? Code: <ul id="nav"> <li class=""><a href="#">Home</a></li> <li class=""><a href="#">About</a> <ul> <li><a href="#">History</a></li> <li><a href="#">Team</a></li> <li><a href="#">Offices</a></li> </ul> </li> </ul> вот. заюзал вар, убрал проверку документ ол. в ФФ както интересно начало подставлять клас.. раз мышкой провел- он все подставил клас, но почемуто не убрал на mouseover второй раз мышкой ровести то к <li class="over"> ставит еще <li class="over over"> и потом уберает на mouseover до <li class="over"> в опера и ИЕ зато все отлично Code: startList = function() { var navRoot = document.getElementById("nav"); for (i=0; i<navRoot.childNodes.length; i++) { node = navRoot.childNodes[i]; if (node.nodeName=="LI") { node.onmouseover=function() { this.className+=" over"; } node.onmouseout=function() { this.className=this.className.replace(" over", ""); } } } } window.onload=startList; там применяется li:hover ИЕ такого не понимает Code: #nav li ul { display: none; } #nav li.over ul { display: block; }
вот скопипастил но чегото не работает. а нужно срочно. Помогите Code: activateMenu = function(nav) { /* currentStyle restricts the Javascript to IE only */ if (document.all && document.getElementById(nav).currentStyle) { var navroot = document.getElementById("nav"); /* Get all the list items within the menu */ var lis=navroot.getElementsByTagName("LI"); for (i=0; i<lis.length; i++) { /* If the LI has another menu level */ if(lis[i].lastChild.tagName=="UL"){ /* assign the function to the LI */ lis[i].onmouseover=function() { /* display the inner menu */ this.lastChild.style.display="block"; } lis[i].onmouseout=function() { this.lastChild.style.display="none"; } } } } } window.onload= function(){ /* pass the function the id of the top level UL */ /* remove one, when only using one menu */ activateMenu('nav'); } просто навожу добираюсь по древу в FF до свойства обьекта у котого даный скрипт должен менять display:none на display:block .. вожу мышкой и ничо не происходит. хм.. может потому что FF в доме любого блока на месте lastChild показывает "\n %) тогда чегото афторы скрипта напутали
На скрытый блок невозможно навести курсор. smOleg, http://code.google.com/p/ie7-js/ P.S. currentStyle есть и в Опере.
та я вспомнил.. теперь так: Code: activateMenu = function(nav) { /* currentStyle restricts the Javascript to IE only */ /* if (document.all && document.getElementById(nav).currentStyle) {*/ var navroot = document.getElementById("nav"); /* Get all the list items within the menu */ var lis=navroot.getElementsByTagName("LI"); for (i=0; i<lis.length; i++) { /* If the LI has another menu level */ if(lis[i].lastChild.tagName=="UL"){ /* assign the function to the LI */ lis[i].onmouseover=function() { /* display the inner menu */ this.lastChild.style.display="block"; } lis[i].onmouseout=function() { this.lastChild.style.display="none"; } } } /* }*/ } window.onload= function(){ /* pass the function the id of the top level UL */ /* remove one, when only using one menu */ activateMenu('nav'); } однако ничего не поменялось
та втом то и дело похоже сдесь оно и ступорится.. грюже ФФ на любом блоке в ДОМЕ в графе ЛАст чаилд показывает "\n " гы.. написал выдало кучу алертов (задолбался мышой клацать) кроме А и аниндефендет ничо небыло
Это для того и сделано. Пишешь стандартный CSS для Opera и FF, а для IE скрипт сам сделает всё что нужно.
Не похоже, а точно показываю, что цикл не проходит а почему именно такой алгоритм? Тебе нужно при наведении на ul сделать видимыми LI ?
незнаю.. главний сказал вот те мега меню мол шоб через н времени все было готово ведь самое трудное меню у тебя уже есть
аа... и вправду на ИЕ данное меню действует.. недодумался я на нем смотрю впоследнюю очередь при наведении на ЛИ видимыми дочерние ЮЛ ну вместе с ихними Ли(эти ЛИ в свою очередь засвечивают свои дочерние ЮЛ при наведении) вобщем всем спасибо.. с этим скриптом все ясно: под ие только работает на другие браузеры тупо css буду делать ведь они понимают hover на все.