Связь активного пункта меню с iframe
Доброго времени суток! Очень необходим добрый совет мастеров JS.
делаю сайт, заготовка проблемного фрагмента здесь http://dadada1916.narod.ru/ А проблема в следующем, на странице имеется меню и <iframe> в котором отображаются страницы вызываемые из меню. <!-- content --> <div id="content"> <div id="top"> <h1>Reliable professional equipment for industry.</h1> <p>From best industrial producers of Europe.</p> </div> <div id="left"> <div class="indent-left"> <h1>Products</h1> </div> <ul id="mainmenu" class="list-1"> <li><a href="Gearmotors.html" target="iframe"><span>Gearmotors</span></a></li> <li><a href="ElectricalMotors.html" target="iframe"><span>Electrical motors</span></a></li> <li><a href="ElectricDrives.html" target="iframe"><span>Electric Drives</span></a></li> <li><a href="Accessories.html" target="iframe"><span>Accessories</span></a></li> <li><a href="Gearboxes.html" target="iframe"><span>Gearboxes</span></a></li> </ul> </div> <iframe src="products/Gearmotors.html" name="iframe" height="470" width="690"></iframe> </div> Необходимо сделать что-бы активному <li> меню присваивался class="alt-1" Одним добрым человеком был предложен вариант добавления в каждую страницу следующего кода: <script type="text/javascript"> window.onload = function(){ mm_items = window.opener.document.getElementById('mainmenu'). getElementsByTagName('LI'); //получаем элементы списка for(var i=0; i<mm_items.length; i++){ //пробегаем по каждому пункту меню mm_items[i].className = ''; //очищаем атрибут класса if(mm_items[i].getElementsByTagName('A')[0].href == window.location.href) //сравниваем ссылку в пункте меню с адресом фрейма mm_items[i].className = 'act-1'; //если ссылка и адрес совпали, значит, пункт меню активен. } } </script> но результата нет. Хотелось бы понять почему? Где ошибка? Если есть другой способ реализации этой задачи тоже было бы интересно его узнать. |
Цитата:
- При выборе элемента списка - писать в куку егопорядковый номер - При перерисовке страницы читать куку, присваивсть нужному элементу "активный" класс, обновлять ифрейм Вариант 2. Будет работать если есть серверный язык... - Иметь на странице скрытую переменную - В ней хранить номер активного эелемента - При формировании страницы, реагировать на значение той переменной Вариант 3. Так же с серверным языком... - Тот же алгоритм как и в.2, только номер хранится в сессии... |
спасибо за дельные советы.
кстати одним добрым человеком было найдено решение: window.opener возвращает ссылку на объект window, который сгенерировал текущее окно методом window.open(), в данном контексте window.opener не определен. Нужно использовать top (окно верхнего уровня в браузере), т.е. должно быть так mm_items = top.document.getElementById('mainmenu').getElement sByTagName('LI'); //получаем элементы списка все заработало! спасибо всем добрым людям на свете! |
Часовой пояс GMT +3, время: 02:15. |