Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Firefox a JavaScript

Najjednoduchšie pre túto chvíľu je opraviť chyby, ktoré tam sú. Z dlhodobého pohľadu by bolo lepšie premyslieť a napísať celé menu odznova.

K elementu, ktorého id je v premennej elementId sa nepristupuje takto:

document.getElementById ("elementId")
ale má to byť takto:
document.getElementById (elementId)

Naopak, keď posielaš id do funkcie ako reťazec, tak ten má byť v úvodzovkách. V HTML kóde musíš prepísať volanie showMenu tak, aby bol prvý a tretí argument v úvodzovkách nejako takto:
showMenu('ldm_uver',0,'aldm2')

Máš tam premennú divID, ktorá je globálna a nemusela by tam byť. Asi si tým chcel riešiť poslanie argumentu do funkcie volanú cez setTimeout, ale to sa dá spraviť jednoduchšie tak, že ten argument pošleš ako tretí argument priamo do funkcie setTimeout. Všetky ďalšie argument funkcie setTimeout sa totiž pošlú funkcii, ktorú setTimeout volá. Čiže napr. funkciu showMenu by som prepísal takto:
function showMenu (divId, isAnchor, anchorId)
{
  clearTimeout (timer); // menu se neskryje

  if (isAnchor)
  {
    var div = document.getElementById (divId);

    aHoverBackNone (); // zrusi pozadi odkazu

    if (div.style.display != "block")
    {
      hideAll (); // skryje ostatni menu, pak zobrazi aktualni
      timerShow = setTimeout(showOne, 300, div); // mys presla na odkaz
    }
  }
  else
    aHoverBack (document.getElementById (anchorId)); // hover odkazu i kdyz jsem ve vys. menu
}

function showOne (div)
{
  div.style.display = "block";
}
edit: teraz vidím, že pomocou toho globálneho divID ošetruješ ešte aj niečo iné, takže aby bol tento kód ekvivalentný tomu Tvojmu, tak ten div v riadku "var div = ..." bude predsa len globálnou premennou.

Inicializuješ polia dosť krkolomným spôsobom, pritom môžeš použiť lepší zápis.
function hideAll ()
{
  var menuArray = ["ldm_leas", "ldm_uver", "bdm_leas", "bdm_uver"];

  for (var i = 0; i < menuArray.length; ++i) // projde pole a vsechna menu skryje
    document.getElementById (menuArray [i]).style.display = "none";
}
Ja by som to ale ani takto nerobil, pretože pri zmene menu budeš musieť meniť aj JavaScript.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny