Autor Zpráva
Medvídek
Profil
Zkoušel jsem nějak sesmolit získání obsahu kotvy z url (dejme tomu adresa: .../novinky/#kotva=633)
<script>
  function get_hash() { 
    hash = document.location.hash.replace(new RegExp('^(.*)#'), ''); 
    get = {} 
    if (hash) { 
        hash = hash.split('&'); 
        for (i = 0; i < hash.length; i++) { 
            hash[i] = (hash[i]).split('='); 
            get[hash[i][0]] = (hash[i][1] ? hash[i][1] : null); 
        } 
    } 
    return get; 
 }
 _get = get_hash();
 var idecko = _get.kotva;
 alert(idecko);//TADY SE SPRAVNE ZOBRAZI 633
 document.getElementById(idecko).style.borderColor='#AAFF00';  //neprovede se, na strance je komentar (div) s ID="633"
 </script>

Pokud si nechám vypsat v alertu proměnnou idecko, tak se správně zobrazí číslo 633. Ale pokud proměnnou použiji, na změnu barvy borderu příspěvku, tak se nic nestane.
Ale i tak mi to přijde trošku krkolomné řešení, raději bych měl kotvy ve formátu #633, ale to zas nevím, jak dostat to číslo.

Zkoušel jsem i s odkazem #633 (pro mě lepší), ale
_get = get_hash();
var idecko = _get[0];

hodí chybu undefined.
Str4wberry
Profil
Některým prohlížečům v některých režimech se, myslím, nelíbí ID s číslem na začátku. Takže bych zkusil před ID přidat nějaký povolený znak (např. písmeno), případně něco jako document.getElementsByTagName("nějakáZnačka")[idecko].style.borderColor='#AAFF00';.
Medvídek
Profil
Str4wberry:
Předělal jsem to na:
...../komentare/#k207
koment = document.location.hash.replace(new RegExp('^(.*)#'), ''); //do promenne se spravne vlozi k207
document.getElementById(koment).style.borderColor='#AAFF00'; //zde se nic nestane :(


Tohle taky ne
document.getElementsByTagName('div')[koment].style.borderColor='#AAFF00';
panther
Profil
Medvídek:
přidáváš sice krásně borderColor, ale je tam nějaký rámeček, který by se měl zbarvit do zelena? Jestli bys neměl místo borderColor měnit celý border (ať už přímo nebo přes třídu).
Str4wberry
Profil
A border-style a border-width už ten <div> má? Samotný borderColor rámeček neudělá.
Medvídek
Profil
Str4wberry:
Má nastaveno border: 1px solid white; chci změnit barvu divu na jinou.
Já to samozřejmě zkoušel i s display='none', abych si byl jistý, že v tom chyba není :(
Chamurappi
Profil
Reaguji na Medvídka:
Voláš ten skript v době, kdy ten element, jehož okraj chceš měnit, už existuje, nebo někde v hlavičce?

zde se nic nestane :(
Prohlížeče mají chybové konzole. Nechceš-li rovnou zmínit odkaz na živou ukázku, mohl bys alespoň lépe popsat projev nefunkčnosti.

Mimochodem, doporučuji spíš měnit třídu (tedy className) a konkrétní vzhled určit v externím CSS.

document.location.hash.replace(new RegExp('^(.*)#'), '');
Místo toho by stačilo location.hash.substr(1). Na začátku hashe je vždy jen mřížka.


Reaguji na Str4wberryho:
Jen upřesním:
případně něco jako document.getElementsByTagName("nějakáZnačka")[idecko]
… kde je idecko pořadové číslo elementu s daným názvem značky, nikoliv atribut id hledaného elementu.
Medvídek
Profil
Chamurappi:
Děkuju, nenapadalo mě, že ten skript musím mít až pod komentářema a né nad nima. Hodil sem ho pod ně a už funguje :)

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:

0