Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проблемы с меню


Автор: klever 29.8.2006, 14:36
Прошу прощения за ламерский вопрос. Ситуация следующая. Есть раскрывающая менюшка на JavaScript. Все работает отлично, кроме одного но. Когда переходишь на нужную страницу - все меню сворачивается и имеем первозданный вид. А нужно чтобы при переходе на страницы с меню, само меню оставалося в таком же развернутом виде. Текст прилагаю ниже. 
З.Ы. Не ругайте сильно, я в Java практически полный ноль, но на моей работе считают другое... smile 
Если имеется такой готовый - буду заранее благодарен


Код

<script language=JavaScript>
function clickHandler() 
{ 
var targetId, srcElement, targetElement; 
srcElement = window.event.srcElement; 
if (srcElement.className == "Outline") 
{
targetId = srcElement.id + "details"; 
targetElement = document.all(targetId); 
if (targetElement.style.display == "none")
{
targetElement.style.display = ""; 
}
else 
{
targetElement.style.display = "none";
}
}
}
document.onclick = clickHandler; 
</script>


Меню

Код

<i id=Out1 class=Outline style="cursor: hand;">Раскрывающееся меню</i><br>
<div id=Out1details style="display:None; position:relative; left:12;"> 
<a href="">Подменю 1-го уровня</a><br>
<a href="">Подменю 1-го уровня</a><br>

<span id=Out5 class=Outline style="cursor: hand; text-decoration: underline; font-size: 11px; font-style: normal;">Раскрывающееся подменю 1-го уровня</span><br>
<div id=Out5details style="display:None; position:relative; left:12;"> 
<a href="">Подменю 2-го уровня</a><br>
<a href="">Подменю 2-го уровня</a><br>
</div>
</div>

Автор: UpL1nK 29.8.2006, 15:27
Просто в страничках, на которые ведут ссылки (подменю) убирай :
Код

display:none;


Автор: klever 30.8.2006, 12:21
Невозможно, так как используется самописный движок (сразу оговорюся - я его не писал), и для сайта есть только один шаблон. На каждой странице нельзя написать так. ...когда писал эти строки в голову пришла другая мысль. Как вариант - удалить движок и сделать обычные html странички. Но это уже самый последний отчаяный ход  smile 

Автор: 12345c 30.8.2006, 13:15
Тогда другой нормальный вариант - написать в страницу скрипт, который после загрузки страницы (по onload или в конце текста страницы) снимает display=='none' (ставит .style.display='block' или ='inline' или='') у нужных ветвей. Именование ветвей известно, поэтому не составит большого труда. Информацию о том, какие ветви открывать, можно получить из URL (location.href) или задавать в параметре того же URL явно, чтобы потом по location.search прочесть.

Автор: klever 30.8.2006, 14:42
Понимаю свою грубую ошибку. Думал что все что нужно описал вначале, а теперь оказываеться много важных деталей пропустил smile 
Идея с сравниванием location.href давно витает в воздухе, но в данном случае снова-таки к сожалению не рациональна - в коде приведен небольшой участок, а на сайте пунктов меню намного больше, соответственно и новых страниц. Хватит что из-за выходок руководства прикрутил саму менюшку на полкилометра, теперь еще проверку условий, и тогда браузер точно загнеться smile 

Автор: 12345c 30.8.2006, 15:50
Современные браузеры довольно крепкие. А если параметры прямо укажут на Ид-ы, которые надо открыть, вообще никто не заметит, что что-то происходило, только дёргание меню из свёрнутого состояния в развёрнутое. Если возможно указать стиль во время загрузки меню - никаких визуальных эффектов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)