Autor Zpráva
marek187
Profil
Zdravim, mam tu jeden skript, ktory mi zvyrazni aktivny odkaz (#2ba5cc):

function switchcolors(thechosenone) {  
      var links = document.getElementsByTagName("a");  
            for (var i=0; i<links.length; i++) { 
                  links.item(i).style.color = '#818181';
                  thechosenone.style.color = '#2ba5cc';
      }
}  

Chcel by som vsak este, aby po prebehnuti myskou (onmouseover) mi zmenilo farbu neaktivnych odkazov (z #818181 na #949494) a pri onmouseout zas vratilo spat. Aktivne odkazy (#2ba5cc) menit farby nebudu.

Akou dodatocnou upravou skriptu a html to dosiahnem? Dakujem...
Chamurappi
Profil
Reaguji na marka187:
To máš zkonstruované nějak divně. Proč měníš barvu thechosenone víckrát? A proč nastavuješ napevno barvu odkazů, které aktivní nejsou? Můžeš je přeci nastylovat ve stylopisu. Tam nastavíš i ten :hover efekt. V jakých situacích switchcolors voláš?
marek187
Profil
po kliknuti na nejaky odkaz sa mi ukaze len jeden konkretny "div" a ostatne sa skryju, na zaklade tohto skriptu:

function showonlyone(thechosenone) {
      var newboxes = document.getElementsByTagName("div");
            for (var x=0; x<newboxes.length; x++) {
                  name = newboxes[x].getAttribute("name");
                  if (name == 'newboxes') {
                        if (newboxes[x].id == thechosenone) {
                        newboxes[x].style.display = 'block';
                  }
                  else {
                        newboxes[x].style.display = 'none';
                  }
            }
      }          
}

nakolko nebolo jasne, ktory odkaz bol otvoreny/aktivny, tak som pridal este tento skript:

function switchcolors(thechosenone) {  
      var links = document.getElementsByTagName("a");  
            for (var i=0; i<links.length; i++) { 
                  links.item(i).style.color = '#818181';
                  thechosenone.style.color = '#2ba5cc';
      }
} 

vsetko funguje spravne, len neviem ako to poriesit s tym onmouseover/onmouseout...
Chamurappi
Profil
Reaguji na marka187:
V tomto případě nevidím žádný důvod, proč by :hover efekt měl řešit skript.
Měněním style.color nastavuješ CSS vlastnost color do atributu style, takže ten pak má větší sílu než cokoliv v CSS. Můžeš do style.color přiřadit prázdný řetězec a nechat nastavování barvy na stylopisu.

Rozumím tomu dobře, že do switchcolors vstupuje přímo element <a> a do showonlyone vstupuje řetězec odpovídající nějakému atributu name?
Stejně ale nechápu, proč odkazu thechosenone nastavuješ color několikrát — pokud je na stránce sto odkazů, tak tomu jednomu stokrát nastavíš barvu na '#2ba5cc'.

po kliknuti na nejaky odkaz sa mi ukaze len jeden konkretny "div" a ostatne sa skryju
Pokud není možné, aby bylo vidět víc <div>ů najednou, proč neskrýváš jen ten jeden, který byl právě zobrazený?
marek187
Profil
Takze, nakoniec som to poriesil tak, ze namiesto onmouseover/onmouseout som vyuzil nakoniec v CSS a:hover a funkciu switchcolors som upravil nasledovne:

function switchcolors(thechosenone) {  
      var links = document.getElementsByTagName("a");  
            for (var i=0; i<links.length; i++) { 
                  links.item(i).style.color = '';
                  thechosenone.style.color = '#2ba5cc';
      }
} 

Do style.color pre neaktivne odkazy som ako si mi poradil priradil prazdny retazec a nechal nastavovanie farby na stylopis.

Teraz funguje vsetko tak ako ma, ale este aby som ozrejmil ten aktivny odkaz thechosenone - pokial napr. odstranim links.item(i) pre neaktivne odkazy, tak po kliknuti na neaktivny odkaz sa zafarbil ako aktivny, ale ked som klikol na dalsi neaktivny odkaz, tak predchadzajuci (uz teraz neaktivny) odkaz je stale zafarbeny ako aktivny.

Potreboval som proste len dosiahnut, aby aktivny odkaz farbu nikdy nemenil a farbu menili len neaktivne odkazy a to som dosiahol priradenim prazdneho retazca, ktory necha nastavenie farby na stylopis.
Chamurappi
Profil
Reaguji na marka187:
Potreboval som proste len dosiahnut, aby aktivny odkaz farbu nikdy nemenil
A zajišťuješ to tím, že mu v cyklu stokrát nastavíš tu samou barvu? Proč je ten řádek 5 uvnitř cyklu?

tak predchadzajuci (uz teraz neaktivny) odkaz je stale zafarbeny ako aktivny
Můžeš si ten předcházející zapamatovat, uložit si ho do proměnné a pak zrušit barvu jen jemu… ani k tomu není potřeba cyklus.

Já bych to na tvém místě dělal ještě jinak — nenastavoval bych odkazu barvu, ale třídu (vlastnost className místo style.color) a teprve ve stylopisu bych určil barvu a případě i jiné vlastnosti, které mají být jiné.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: