Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Просто дописать в style="" (https://javascript.ru/forum/dom-window/38919-prosto-dopisat-v-style%3D.html)

zork0 08.06.2013 01:23

Просто дописать в style=""
 
Нужно, что бы активный пункт меню выделялся фоном. Вот изначальный скрипт:
function act(){
  var tags=document.getElementsByTagName("li");
  for(i in tags){
    if(tags[i].className=="act"){
        if(document.location.href==tags[i].firstChild.href){
            tags[i].className += "active";
        }
    }
  }
}

Но он не работает, так как клас active низкий по приоритету за некотрые базовые. Выход: последнюю строчку заменить. Что бы в style="" джава дописивала оределенные значение. А пока учить времени нет. Помогите, есле не сложно.

oneguy 08.06.2013 05:40

А если написать
tags[i].className += " active";

то тоже не работает? А то у вас получается класс "actactive".
Можно ещё, например
tags[i].style.backgroundColor="gray";

Цитата:

Сообщение от zork0
джава

Не Джава, а Джаваскрипт!

zork0 08.06.2013 11:12

Цитата:

Сообщение от oneguy (Сообщение 255302)
А если написать
tags[i].className += " active";

то тоже не работает? А то у вас получается класс "actactive".
Можно ещё, например
tags[i].style.backgroundColor="gray";


Не Джава, а Джаваскрипт!

Да, это то что нужно. Но не работает почему то(
var tags=document.getElementsByTagName("a");
  for(i in tags){
    if(tags[i].className=="act"){
        if(document.location.href==tags[i].firstChild.href){
            tags[i].style.backgroundColor="gray";
        }
    }
  }
}

dmitriymar 08.06.2013 11:20

1
var tags=document.getElementsByTagName("a");
Цитата:

Сообщение от zork0
if(document.location.href==tags[i].firstChild.href){

какой же у ссылки firstChild с href?
if(document.location.href==tags[i].href)

а вообще определитесь , у чего должен быть класс act у а или у li?

2
Цитата:

Сообщение от zork0
for(i in tags){

ну это вообще не по феншуй? перебирать фор ин массивы или элементы подобные массивам
for (var i=tags.length; i--;){

danik.js 08.06.2013 11:59

Цитата:

Сообщение от dmitriymar
ну это вообще не по феншуй? перебирать фор ин массивы или элементы подобные массивам

Феншуй тут не причем. Дело в том что length и item тоже попадают в перечисление.

dmitriymar 08.06.2013 12:03

Цитата:

Сообщение от danik.js
Дело в том что length и item тоже попадают в перечисление.

это и есть феншуй .:) правильнее сказать- могут попасть в зависимости от браузера.

danik.js 08.06.2013 12:19

item попадает во всех. length не попадает только в IE. В опере почему-то попадает еще undefined. В файрфоксе попадает еще namedItem, iterator и все id'шники, имеющиеся в коллекции.

dmitriymar 08.06.2013 12:45

в 5м перечисляет только перечислимые. поэтому, там где 5 полностью реализован для этого , перечислит только ссылки-но когда это будет... другой момент как браузеры их сейчас помечают .
а вот сейчас ,активно уже, "деятели" проходят по массивам и объектам подобным им ....

zork0 08.06.2013 17:44

Цитата:

Сообщение от dmitriymar (Сообщение 255315)
1
var tags=document.getElementsByTagName("a");

какой же у ссылки firstChild с href?
if(document.location.href==tags[i].href)

а вообще определитесь , у чего должен быть класс act у а или у li?

2 ну это вообще не по феншуй? перебирать фор ин массивы или элементы подобные массивам
for (var i=tags.length; i--;){

Спасибо за опширный ответ. Кстати, скрипт работал и без укзааного firstChild. Правда, я посмотрел меню небольшое статичное, можно обойтись и без скрипта)


Часовой пояс GMT +3, время: 06:35.