Показать сообщение отдельно
  #1 (permalink)  
Старый 05.12.2014, 14:49
Новичок на форуме
Отправить личное сообщение для asdds Посмотреть профиль Найти все сообщения от asdds
 
Регистрация: 05.12.2014
Сообщений: 4

Новичок, подскажите как оптимизировать скрипт.
Доброго времени суток.
JS только начал изучать, ну и,вероятно раньше времени, решил реализовать ajax.
Скрипт рабочий, но громоздкий, и оставлять в таком виде его никак нельзя.
Делает он следующее - в навигации, onclick, меняет div с основным контентом и заодно меняет у элемента навигации класс на активный.

У меня рабочим получился только такой велосипед:
function services()
{
document.getElementById('main').className = 'nav-cell';
document.getElementById('services').className = 'nav-active';
document.getElementById('job').className = 'nav-cell';
document.getElementById('about').className = 'nav-cell';
document.getElementById('contacts').className = 'nav-cell';
loadXMLDoc("services.html",function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("main-content").innerHTML=xmlhttp.responseText;
    }
  });
}

function job()
{
document.getElementById('main').className = 'nav-cell';
document.getElementById('services').className = 'nav-cell';
document.getElementById('job').className = 'nav-active';
document.getElementById('about').className = 'nav-cell';
document.getElementById('contacts').className = 'nav-cell';
loadXMLDoc("job.html",function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("main-content").innerHTML=xmlhttp.responseText;
    }
  });
}

..... и так далее, всего 5 раз, каждому элементу навигации по функции :(


Собственно вопросы:
1. Нужно как-то находить элемент навигации, который был активным до клика, и возвращать ему стандартный класс. Я это, в силу скромных познаний представляю примерно так:
var active = document.getElementsByClassName('nav-active').id;
document.getElementById(active).className = 'nav-cell';

или так:
var active = document.getElementsByClassName('nav-active');
document.getElementById(active.id).className = 'nav-cell';

Но, по причине моей безграматности в js, оно так работать не хочет.
2. Вот эту ajax функцию можно не повторять пять раз а вынести отдельно, и просто менять аргументы?
loadXMLDoc("services.html",function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("main-content").innerHTML=xmlhttp.responseText;
    }
  });
}

Просто я пробовал, и оно перестает работать.
3. Здесь вообще нужно пять отдельных функций, подозреваю что хватит одной с аргументами.

Буду благодарен за любой совет. Ногами не пинайте, просто полез изучать не с того конца, и надо уже довести до конца и разобраться.
Ответить с цитированием