Autor Zpráva
TAYNEYT
Profil *
Zdravím všechny,

mám tvořené vysouvací menu pomocí:

<script>
<!--
function nabidka(idex){
if (idex.style.display == 'none')
idex.style.display='';
else
idex.style.display='none'
}
</script>

<td><span onClick="nabidka(s1)" style="cursor: hand"> ..
<td><span onClick="nabidka(s2)" style="cursor: hand"> ..

Vse je ok ale mam problem s tim aby kdyz kliknu na vedlejsi menu tedy s ID s2 ze se mi otevre soucasne a tudis mam obe submenu otevrena...

nemohl by mi prosim nekdo poradit jak to upravit aby se po kliku jinam to otevrene submenu zavrelo, nebo kdyz kliknu na jine polozku menu aby se totot utevrelo

Dekuji Predem
petr 6
Profil
TAYNEYT:
Vse je ok
Tak je vse v poradku, nebo neco nefunguje? Az na vicemene kosmeticke chyby je kod v poradku.

Mozna by bylo lepsi pri popisu "problemu" pouzit jina slova nez „totot“, „soucasne“, „kliku jinam“ nebo „submenu“ (ja teda v tom kodu zadne menu ani submenu nevidim)
TAYNEYT
Profil *
[b]petr 6[/b

dekuju za odezvu,

je v poradku to cca na 90%. jde mi hlavne o to kdyz prepinam mezi S1 a s2 aby po otevreni s2 zmizelo s1 a naopak.
fajzen
Profil
TAYNEYT:
predpokladám, že niekde v kóde je niečo ako
var s1 = document.getElementById('s1');
var s2 = document.getElementById('s2');

ak áno, používajú tieto premenné aj iné funkcie?
JM
Profil *
Ahoj Fajzen, dakujem za tvou odpoved. Bohuzel vsetko co tam je je toto:
<script>
<!--
function nabidka(idex){
if (idex.style.display == 'none')
idex.style.display='';
else
idex.style.display='none'
}
</script>


<script>
<!--
function nabidka(idex){
if (idex.style.display == 'none')
idex.style.display='';
else
idex.style.display='none'
}
</script>

<span onClick="nabidka(s1)" style="cursor: hand"><a "MM_nbGroup('down','group1','head3a_gealan','images/head4a_gealan.jpg',1)" onMouseOver="MM_nbGroup('over','head3a_gealan','images/head4a_gealan.jpg','images/head4a_gealan.jpg',1)" onMouseOut="MM_nbGroup('out')"><img src="images/head3a_gealan.jpg" alt="O Nás" name="head3a_gealan" height="50" border="0" align="top"/></a></span></td>
<td><span onClick="nabidka(s2)" style="cursor: hand"><a "MM_nbGroup('down','group1','head3b_gealan','images/head4b_gealan.jpg',1)" onMouseOver="MM_nbGroup('over','head3b_gealan','images/head4b_gealan.jpg','images/head4b_gealan.jpg',1)" onMouseOut="MM_nbGroup('out')"><img src="images/head3b_gealan.jpg" alt="Služby" name="head3b_gealan" width="80" height="50" border="0" align="top"/></a></span></td>

a pak uz nic ine .... a prave ze to robi pouze onclick - display a onclock znovu display=nono ale bohuzel kdyz kiknu na polozku s2 s1 sa nezavre.

diky
fajzen
Profil
JM (alias TAYNEYT):
v tom prípade je divné, že to robí vôbec niečo :)
pretože ak je s1, s2 naozaj ID prvku, tak by sa mali predávať funkcií ako reťazce uzavreté v apostrofoch, teda
<span onClick="nabidka('s1')"
a vo funkcií by sa malo pristupovať k prvkom
document.getElementById(idex).style.display

takto by to malo hádzať chyby (resp. nemalo by to nič spraviť)...
okrem toho v kóde, ktorý si teraz poslal, nie sú prvky s týmito ID, zato je tam funkcia MM_nbGroup() (ktorá je tam tiež nejak divoko použitá
<a "MM_nbGroup('down','group1','head3a_gealan','images/head4a_gealan.jpg',1)" 


ešte sa chcem spýtať: budú tam iba tie dva prvky s1, s2 alebo ich tam je (prípadne v budúcnosti by mohlo byť) viac?

a prosím, kód vkladaj medzi značky [ pre ] [/ pre ] (bez tých medzier
JM
Profil *
Ahoj,

celkom ich tam bude 3. Pokud mozem posilam kod cely aby si vedel o co jde.

< <script>
<!--
function nabidka(idex){
if (idex.style.display == 'none')
idex.style.display='';
else
idex.style.display='none'
}
</script>>

< <table width="980"border="0" align="center" cellpadding="0" cellspacing="0" id="Tabulka_01" colaspan="2">
<tr>
<td><span onClick="nabidka(s1)" style="cursor: hand"><a "MM_nbGroup('down','group1','head3a_gealan','images/head4a_gealan.jpg',1)" onMouseOver="MM_nbGroup('over','head3a_gealan','images/head4a_gealan.jpg','images/head4a_gealan.jpg',1)" onMouseOut="MM_nbGroup('out')"><img src="images/head3a_gealan.jpg" alt="O Nás" name="head3a_gealan" height="50" border="0" align="top"/></a></span></td><td><span onClick="nabidka(s2)" style="cursor: hand"><a "MM_nbGroup('down','group1','head3b_gealan','images/head4b_gealan.jpg',1)" onMouseOver="MM_nbGroup('over','head3b_gealan','images/head4b_gealan.jpg','images/head4b_gealan.jpg',1)" onMouseOut="MM_nbGroup('out')"><img src="images/head3b_gealan.jpg" alt="Služby" name="head3b_gealan" width="80" height="50" border="0" align="top"/></a></span></td>
<td><span onClick="nabidka(s3)" style="cursor: hand"><a "MM_nbGroup('down','group1','head3c_gealan','images/head4c_gealan.jpg',1)" onMouseOver="MM_nbGroup('over','head3c_gealan','images/head4c_gealan.jpg','images/head4c_gealan.jpg',1)" onMouseOut="MM_nbGroup('out')"><img src="images/head3c_gealan.jpg" alt="Produkty" name="head3c_gealan" width="80" height="50" border="0" align="top"/></a></td>
<td><a href="index.php?cid=97" target="_top" onClick="MM_nbGroup('down','group1','head3d_gealan','images/head4d_gealan.jpg',1)" onMouseOver="MM_nbGroup('over','head3d_gealan','images/head4d_gealan.jpg','images/head4d_gealan.jpg',1)" onMouseOut="MM_nbGroup('out')"><img src="images/head3d_gealan.jpg" alt="Reference" name="head3d_gealan" width="80" height="50" border="0" align="top"/></a></td>
<td><a href="./kalkulace.php" target="_blank" onClick="MM_nbGroup('down','group1','head3e_gealan','images/head4e_gealan.jpg',1)" onMouseOver="MM_nbGroup('over','head3e_gealan','images/head4e_gealan.jpg','images/head4e_gealan.jpg',1)" onMouseOut="MM_nbGroup('out')"><img src="images/head3e_gealan.jpg" alt="Poptávka" name="head3e_gealan" width="80" height="50" border="0" align="top"/></a></td>
<td><a href="index.php?cid=98" target="_top" onClick="MM_nbGroup('down','group1','head3f_gealan','images/head4f_gealan.jpg',1)" onMouseOver="MM_nbGroup('over','head3f_gealan','images/head4f_gealan.jpg','images/head4f_gealan.jpg',1)" onMouseOut="MM_nbGroup('out')"><img src="images/head3f_gealan.jpg" alt="Kontakt" name="head3f_gealan" width="80" height="50" border="0" align="top"/></a></td>
<td width="200"><img src="images/head3g_gealan.jpg" width="200" height="50" /></td>
<td width="200"><img src="images/head2a_gealan.jpg" width="295" height="50"></td>
</tr>
<tr>
<td colspan="11" valign="top"><img src="images/head1_gealan.jpg" width="685" height="105" /><img src="images/head2b_gealan.jpg" width="295" height="105">
<table border="0" id="s1" style="display:none;" >
<tr>
<td><img src="images/sub_onas.png" width="56" height="35" /></td>
<td width="135" height="35" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=94">O společnosti</a></strong></div></td>
<td width="135" height="35" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=95">Výběrové řízení</a></strong></div></td>
<td width="135" height="35" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=96">Ke stažení</a></strong></div></td>
</tr>
</table>
<table border="0" id="s2" style="display:none;" >
<tr>
<td><img src="images/sub_sluzby.png" width="56" height="35" /></td>
<td width="135" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=100">Prodej</a></strong></div></td>
<td width="135" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=101">Montáž</a></strong></div></td>
<td width="135" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=102">Servis</a></strong></div></td>
<span onClick="nabidka(i3)" style="cursor: hand"></span> </tr>
</table>
<table border="0" id="s3" style="display:none;">
<tr>
<td><img src="images/sub_produkty.png" width="56" height="35" /></td>
<td width="135" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=107">Plastová okna</a></strong></div></td>
<td width="135" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=108">Eurookna</a></strong></div></td>
<td width="135" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=109">Hliníková okna</a></strong></div></td>
<td width="135" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=110">Stínící technika</a></strong></div></td>
<td width="135" background="images/submenu.png"><div align="center"><strong><a href="index.php?cid=111">Garážová vrata</a></strong></div></td>
</tr>
</table></td> >
JM
Profil *
Omlouvam se kod vlozim priste spravne / nevsiml jsem si posledne vety.
fajzen
Profil
JM:
aha, už som na to prišiel... takto to nefunguje iba vo Firefoxe... ak chceš, aby to fungovalo aj tam, používaj pre prístup k prvkom cez id metódu getElementById('id_prvku')

a teraz konečne k riešeniu tvojho problému :)
<script>
<!--
function nabidka(idex){
  var items = ['s1', 's2', 's3']; // zoznam všetkých prvkov

  for(var i = 0; i < items.length; i++)
    document.getElementById(items[i]).style.display = 'none';

  document.getElementById(idex).style.display='';
}
-->
</script>


a do volania funkcie podopĺňaj tie apostrofy
<span onClick="nabidka('s1')" style="cursor: hand">


EDIT: a ak by si to chcel mať efektnejšie, mohol by si použiť jQuery UI - accordion
JM
Profil *
klobouk dolu pane amooc dekuji!!!

muzu na tebe dostat mail ci iny kontakt???

jsem tvym dluznikem
fajzen
Profil
JM:
nemáš za čo :)

muzu na tebe dostat mail ci iny kontakt???
sorry, ale asi radšej nie, nemám s tým dobré skúsenosti...
ale keď budeš mať nejaký problém, hoď to sem, tu ti poradia určite lepšie ;)
JM
Profil *
akorat mam jen maly problemik jeste - po nahrati tieto upravy to pracuje ve fairfoxe OK a stranky - prezentace v IE vubec nenaskoci a nevim preco.
fajzen
Profil
ešte som v tom skripte spravil menšiu optimalizáciu, tak si to uprav
fajzen
Profil
môžeš sem dať odkaz na živú ukážku?
JM
Profil *
muzu to urcite ale ta zmena je???

www.oknasuchanek.cz
JM
Profil *
je to taka mala " prasecinka" ale bohuzel jde pouze o upravy nejake a zatim prepis ww neni chten
fajzen
Profil
neni to najhoršie ;)

zmenu je v príspevku [#9] vo funkcií nabidka
v IE to nejde, pretože som tam zabudol dať --> pred </script>, sorry
JM
Profil *
hej, uz je to OK :-) dekuji moc za pomoc - super. byvas tu na diskuzi casto???
fajzen
Profil
JM:
ako kedy... v poslednej dobe celkom hej

btw. hneď na úvodnej stránke v hlavnom texte máš preklep: vítejte na našich strábkách
JM
Profil *
diky moc :-)
TAYNEYT
Profil *
muzu jeste poprosit Flajzene k vyse uvedenemu o jednu radu?? Vcera jsem docilili toho ze nas script funguje jak ma a ovlada IDcka: s1 s2 s3 - coz jsou submenu. Je mozno upravit ten script tak aby v pripade rozkliknuteho submenu s1 nebo s2 nebo s3 zustavalo stale otevrene aby se lide nemuseli porad dokola otevirat submenu kdzy chteji prekliknout na jinou polozku, ?
fajzen
Profil
TAYNEYT:
funkciu nabidka si uprav takto:
<script>
<!--
function nabidka(idex){
  var items = ['s1', 's2', 's3']; // zoznam všetkých prvkov

  for(var i = 0; i < items.length; i++)
    document.getElementById(items[i]).style.display = 'none';

  document.getElementById(idex).style.display='';
  document.cookie = 'submenu=' + idex;
}
-->
</script>

tag body si uprav takto
<body onLoad="MM_preloadImages('images/head4a_gealan.jpg','images/head4b_gealan.jpg','images/head4c_gealan.jpg','images/head4d_gealan.jpg','images/head4e_gealan.jpg','images/head4f_gealan.jpg');menu_init();">

a doplň do JS novú funkciu menu_init():
function menu_init()
{
  var start = document.cookie.indexOf('submenu=');
  if(start == -1) return;
  start += 8;
  var end = document.cookie.indexOf(';' , start);
  if(end == -1) end = document.cookie.length;

  var el = document.cookie.substring(start, end);
  if(document.getElementById(el))
    document.getElementById(el).style.display = '';
}

netestoval som to, tak keby čosi, napíš
a je to založené na cookies, takže ak návštevník nemá povolené cookies, tak to nebude fungovať

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: