Доброго времени суток.
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. Здесь вообще нужно пять отдельных функций, подозреваю что хватит одной с аргументами.
Буду благодарен за любой совет. Ногами не пинайте, просто полез изучать не с того конца, и надо уже довести до конца и разобраться.