problem s javascriptom

Programovacie jazyky, rady, poradňa...
Hossa1881
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1071
Registrovaný: 31 júl 2005, 21:51
Bydlisko: Martin//Ostrava
Kontaktovať používateľa:

problem s javascriptom

Príspevok od používateľa Hossa1881 »

Mam spraveny javascript na jednoduche vetviace menu - ked s& klikne na katedra vyroluje sa nazory a link. Problem je, ze pri nacitani je to menu rozbalene a az potom sa "zabali" tak, ako by to malo byt. Neviete kde by som mohol mat chybu?

Dakujem za rady

Kód: Vybrať všetko

 
      <script type="text/javascript">
// <![CDATA[
function parseMenu()
	{
	spanlink=document.getElementById("odkazy").getElementsByTagName("span");
	for (var x=1; x <= spanlink.length-1; x++)
		{
		showHide(spanlink[x]);
		}
	}

function showHide(tree)
	{
	tree=tree.nextSibling.nextSibling;
	if (tree.style.display=="none")
		{
		tree.style.display="block";
		}
	else
		{
		tree.style.display="none";
		}
	}
window.onload=new Function("parseMenu()");
// ]]>
</script>
<ul id="odkazy">
              
              <p>Katedry</p>
                <p class="style20"><span onclick="showHide(this);return false;">. </span></p>

                <span onclick="showHide(this);return true;"><p>Katedra</p></span>
                <ul>
                  <li>
                    <a href="#">Nazory</a> 
                  </li>
                  <li>
                    <a href="#">link</a>
                  </li>

                </ul>
       		<span onclick="showHide(this);return true;"><p>Katedra</p></span>
                <ul>
                  <li>
                    <a href="#">Nazory</a> 
                  </li>
                  <li>
                    <a href="#">link</a>
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: problem s javascriptom

Príspevok od používateľa audiotrack »

naštýluj si to cez css, aby boli na začiatku skryté a riadok window.onload=new Function("parseMenu()"); odstráň
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: problem s javascriptom

Príspevok od používateľa chrono »

Udalosť "load" nastane až po tom, ako prehliadač načíta všetko (a teda okrem html, aj obrázky, štýl...). V tvojom prípade je rozumnejšie použiť "DOMContentLoaded", keďže tá udalosť nastane hneď po spracovaní html dokumentu. Ak nie je ten dokument príliš zložitý, tak tam to rozbalené menu nebude vidieť.

Problém je, že len niektoré prehliadače podporujú tú udalosť, pri niektorých sa to robí trochu inak a niektoré (tie staré), to nepodporujú vôbec. Knižnice ako jQuery to majú vyriešené a na internete sa dajú nájsť aj knižnice, ktoré poskytujú univerzálne rozhranie k tej udalosti (a ak prehliadač nič také nepodporuje, použije sa nakoniec load).

Výhoda rozbaleného menu je tá, že ak nefunguje javascript, tak sa menu bude dať aj tak používať (pretože bez javascriptu ho nerozbalíš). Ak ale je ten html kód zložitý, tak ti "DOMContentLoaded", nemusí pomôcť a budeš musieť urobiť to, čo písal Audiotrack.
Napísať odpoveď