Достался сайт для оптимизации, сделан криво, предыдущие разработчики канули в лету. Самая неприятная проблема, не работает выпадающее меню, сделанное на js, не могу понять в чем дело. Буду очень признателен если кто поможет
читать дальше
function r_menu(id) {
if(document.getElementById('r_box_'+id).style.display == 'block') {
document.getElementById('r_box_'+id).style.display = 'none';
document.getElementById('id_h_'+id).className = 'r_menu';
return;
}
for(i = 1; i <= 7; i++) {
document.getElementById('r_box_'+i).style.display = 'none';
document.getElementById('id_h_'+i).className = 'r_menu';
}
document.getElementById('id_h_'+id).className = 'r_menu_2';
document.getElementById('r_box_'+id).style.display = 'block';
}
<UL><li class="r_menu">Регистрация/ ликвидация фирм и ИП
<ul style="display:none;" id="r_box_1"><li>Регистрация ООО ЗАО, ООО и др.</li><li>Регистрация ПБОЮЛ</li><li>Готовые фирмы, в том числе и с лицензиями (г.Екатеринбург, г.Тюмень, г.Москва…)</li><li>Внесение изменений в учредительные документы </li><li>Ликвидация фирм </li><li>Реорганизация юридических лиц (присоединение, слияние, выделение ….)</li><li>Предоставление юридического адреса, в том числе и с почтовой поддержкой.</li></ul>
</li><li class="r_menu">Судебная защита
<ul style="display:none;" id="r_box_2"><li>Представление интересов в судах </li><li>Арбитраж </li><li>Суды общей юрисдикции</li><li>Налоговые споры </li><li>Взыскание долгов</li></ul>
</li><li class="r_menu">Юридическое сопровождение
<ul style="display:none;" id="r_box_3"><li>Юридическое сопровождение </li><li>Составление и анализ договоров</li><li>Полное сопровождение деятельности фирмы </li><li>Юридическая консультация</li><li>Услуги адвоката</li></ul>
</li><li class="r_menu">Бухгалтерские услуги
<ul style="display:none;" id="r_box_4"><li>Бухгалтерское сопровождение</li><li>Восстановление бухгалтерского и налогового учета</li><li>Консультирование по вопросам бухгалтерского и налогового учета </li><li>Персонифицированный учет</li></ul>
</li><li class="r_menu">Сопровождение сделок с недвижимостью
<ul style="display:none;" id="r_box_5"><li>Приватизация (оформление в собственность) недвижимости (земельные участки, квартиры…..)</li><li>Узаконение перепланировок (на любом этапе)</li><li>Узаконение самовольных построек</li><li>Дачная амнистия</li><li>Оформление наследства (юридическое и фактическое принятие наследства)</li></ul>
</li><li class="r_menu">Получение лицензий и разрешений
<ul style="display:none;" id="r_box_6"><li>Строительные, проектные лицензии</li><li>Лицензии на изыскание</li><li>Медицинские лицензии </li><li>Лицензии на фармацевтическую деятельность</li><li>Лицензии Ростехнадзора</li><li>Реставрационные лицензии</li><li>Постановка на специальный учет в пробирной инспекции (работа с драг.металлом)</li><li>Классификатор видов экономической деятельности</li></ul>
</li><li class="r_menu">Изготовление печатей, штампов</li><li class="r_menu">Вступление в СРО</li><li class="r_menu">Контакты</li></ul>
ссылка:
uk-cpr.ru/Спасибо
@темы:
Вопрос,
Java script,
Java
Источник: uk-cpr.ru/index.html
Строка: 113
Отсутствует элемент с id="r_box_7". Соответственно, в цикле при i=7 получается document.getElementById('r_box_'+i)=null. Естественно, у null'а нет никакого свойства style, и при попытке получить document.getElementById('r_box_'+i).style получаем исключение, которое нигде в коде не обрабатывается. Так что движок яваскрипт просто прекращает выполнение обработчика onclick - и, соответственно, никакое меню не отображается.
Я бы вместо for'а написал бы нечто следующее:
Спасибо, все работает