Autor Zpráva
kamilvalek
Profil
Zdravím, mohl by mi někdo pomoci se scriptem na skrytí a zobrazení textu? Vše funguje, ale když chci zobrazený text zpět skrýt, tak to bohužel nejde a nevím si s tím rady. Díky za pomoc


<script>
function prohod() {
  document.getElementById("skryt").style.visibility = "visible";
  document.getElementById("zobrazit").style.visibility = "visible";
}
</script>
 
<div id="skryt">
   <form action="javascript: prohod()">
        <input type="submit" value="Zobrazit více">

   </form>
</div>
 
<div style="visibility:hidden;" id="zobrazit">
   <p>puvodne skryty div<p>
</div>
peta
Profil
kamilvalek:
"chci zobrazený text zpět skrýt"
Tvuj kod neobsahuje zadny prikaz na skryti kodu, ktery by se dal ovladat javascriptem. Mas tam jen js prikaz na zobrazeni.
Nebylo by lepsi menit tag.className (<tag class="skryty">)?
Jo, nevim jiste, co se stane na action="javascript: prohod()" ja radeji pouzivam onsubmit="prohod(); return false;. Jakoze, jestli se ti formular odesle a nacte cista stranka od nova...
Joker
Profil
kamilvalek:
Přepínání by se muselo udělat jinak, například, pokud proměnná element bude prvek DOMu (getElementById("něco)):
if (element.style.visibility == "visible) {
  element.style.visibility = "hidden";
} else {
  element.style.visibility = "visible";
}
Nebo to samé zkráceně:
element.style.visibility = (element.style visibility == "visible") ? "hidden" : "visible";

peta:
Nebylo by lepsi menit tag.className (<tag class="skryty">)?
Sluší se ovšem dodat, že v takovém případě by na přepínání viditelnosti potřeboval ještě funkce ve stylu hasClass a removeClass.
peta
Profil
Joker: Ale on pouziva id, class nevyuziva, staci className="" a className="skryty". Nepotrebuje resit vice class.
kamilvalek
Profil
kamilvalek, Joker:
A jak by v tomto případě vypadal celý kód? Nevím zda jsem to správně pochopil, nefunguje mi zobrazení vůbec.
Joker
Profil
peta:
Nepotrebuje resit vice class.
…a nikdy na ten prvek další třídu nepřidá. To je docela odvážný předpoklad. A opět nesouhlasím s tímhle stylem řešení problémů.

kamilvalek:
Třeba zhruba nějak takhle:
function prepni(element) {
  element.style.visibility = (element.style visibility == "visible") ? "hidden" : "visible";
}
function prohod() {
  prepni(document.getElementById("skryt"));
  prepni(document.getElementById("zobrazit"));
}
kamilvalek
Profil
Joker:
nevím kde je problém, ale text se mi po kliku nezobrazí
kamilvalek
Profil
tak nakonec jsem to pořešil takto:
<script type="text/javascript">
  function SwitchElementVisibility (AName)
  {
    var xElement;
    xElement = document.getElementById(AName);
 
    if (xElement.style.display == 'block'){
      xElement.style.display = 'none';
    } else {
      xElement.style.display = 'block';
    }
  }
</script>
<a href="#" onclick="SwitchElementVisibility('div_text_01'); return(false);"><font color="SkyBlue">zobrazit/skrýt</font></a><br />

<div style="display: none;" id="div_text_01">
VraJo
Profil *
Zdravim,

jQuery obsahuje presne na toto .fadeToggle(). Ak je chut a cas: http://api.jquery.com/fadeToggle/
peta
Profil
Joker
0: id1 nic, id2 style="visibility:hidden;"
1: prepni
2: nic -> visible, hidden -> visible
3: prepni
4: visible -> hidden, visible -> hidden
5: a dal uz neni na co klikat, vsechno je hidden
:)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0