Jump to content
  • 0

Динамическая подстановка class


slavok47
 Share

Question

<ul>
<li id="test" class="active"><a href="xXXXXXXXXXXX" accesskey="1" title="Главная" onclick="loadmenu">Главная</a></li>
<li id="test1"><a href="XXXXXXXXXXXXXX" accesskey="2" title="Заказать">Заказать</a></li>
</ul>

Вопрос, как сделать чтобы при нажатии заказать, class="active" присваивался к этому li, а с первого убирался,

дуамю примерно должно выглядеть так

<script type="text/javascript">   
function loadmenu() {
var menuName = .......................
document.getElementById("test").class = .....;
}
</script>

хотя помоему это не то

Link to comment
Share on other sites

Recommended Posts

  • 0

Наверное лучше сделать так

<ul id="menu">
<li class="active"><a href="#" accesskey="1" title="Главная" onclick="loadmenu(this)">Главная</a></li>
<li><a href="#" accesskey="2" title="Заказать" onclick="loadmenu(this)">Заказать</a></li>
</ul>

 function loadmenu(node){
var menu = document.getElementById('menu')
var li = menu.getElementsByTagName('li')


if(node.parentNode.className == ''){
for(var i = 0; i<li.length;i++){
li.item(i).className = ''
}
node.parentNode.className = 'active'
}


}

Link to comment
Share on other sites

  • 0
ххм.. работает, только почему то на главную возвращает

http://www.stil-master.ru/static/index.html

попробуй после каждого вызова функции в ссылке написать onclick="loadmenu(this) return false;

Link to comment
Share on other sites

  • 0
попробуй после каждого вызова функции в ссылке написать onclick="loadmenu(this) return false;

a href="http://www.stil-master.ru/static/index.html" onclick="loadmenu(this) return false;" title="Главная">Главная</a>

не работает :)

<title> - порадовал :)

Так и знал ржать будут кто заметит)))

Link to comment
Share on other sites

  • 0
a href="http://www.stil-master.ru/static/index.html" onclick="loadmenu(this) return false;" title="Главная">Главная</a>

не работает :)

ой, забыл точку с запятой перед return false;

должно быть так onclick="loadmenu(this); return false;

Link to comment
Share on other sites

  • 0

Блин, ну вы че товарищи... страница же перезагружается! Скрипт будет каждый раз отрабатывать заново.

slavok47, поймите, что это не решается клиентским скриптом. Точнее тут нужна связка - яваскрипт + серверный скрипт.

Link to comment
Share on other sites

  • 0
а какой выход тогда?

Есть решение на чистом JS. Надо передавать ссылку на страницу вида http://адрес.ru/страница.html?id=1, где id будет все время меняться в зависимости от того какую ссылку надо подсветить. А потом надо парсить урл и, получив id, подсвечивать ту или иную ссылку.

Link to comment
Share on other sites

  • 0
Есть решение на чистом JS. Надо передавать ссылку на страницу вида http://адрес.ru/страница.html?id=1, где id будет все время меняться в зависимости от того какую ссылку надо подсветить. А потом надо парсить урл и, получив id, подсвечивать ту или иную ссылку.

Ооо, ну это уже жестоко для меня, полнейший тёмный лес, так что извините.

Link to comment
Share on other sites

  • 0

Ниче сложного:

есть такой метод у объекта window, называется location, так вот window.location возвращает нам url

есть такой метод split, который разбивает строку по определенному разделителю и записывает совпадения в массив

пример:

есть строка - http://сайт/страница?блабла=блабла

var array = split('//', строка); выдаст массив из 2-х элементов - array[0] = 'http:', array[1] = 'сайт/страница?блабла=блабла'

делим еще раз

array = split('/', array[1]); выдаст массив из 2-х элементов - array[0] = 'сайт', array[1] = 'страница?блабла=блабла'

делим снова

array = split('?', array[1]); - получим array[0] = 'страница', array[1] = 'блабла=блабла';

надоело писать, думаю дальше не сложно догадаться...

Можно наверное и через регулярки сделать, но так проще.Так что парсить урлы легко.

Link to comment
Share on other sites

  • 0
array = split('?', array[1]); - получим array[0] = 'страница', array[1] = 'блабла=блабла';

надоело писать, думаю дальше не сложно догадаться...

Можно наверное и через регулярки сделать, но так проще.Так что парсить урлы легко.

array = split('=', array[1]); - получим array[0] = 'блабла'; тоесть ID

типа того?

Link to comment
Share on other sites

  • 0

Упс напортачил, не window.location, а window.location.href

как сделать адрес такого вида)) http://сайт/страница?блабла=блабла

в ссылку напишите:

<a href="company.html?page=1">О компании</a>

Вот замутил пример скрипта, а то в посте все переврал...

function getEmul(str) {
var url = str || window.location.href;
url = url.slice(7, url.length);

var array = url.split('?');
var id = array[1].split('=');

if (id[1] == 1) {
alert('Вы находитесь на первой странице\nid=' + id[1]);
} else {
alert('Вы находитесь на другой странице\nid=' + id[1]);
}
}

getEmul('http://www.site.ru/page.html?id=2');

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy