div nyitás (mindig egy) javascipt-tel
Üdv mindenkinek!
Egy olyan progit szeretnék írni, ahol gombokkal tudok diveket nyitni, de ha már nyitva van egy divem a következő nyitásakor, akkor előbb a nyitva lévőt zárja be, majd nyitja a kívánt divet.
Többféleképpen is próbálkoztam már
- a divek állapotát lekérdeztem, majd a nyitottat zártam, de ez buggos volt. (csak azt nem csinálta amit kellett volna)
- most a nyitott divet tároltam változóban, és a következő nyitásnál ezt zártam. Ez egyes firefox verziókon már működik, másokon buggos, de ie-n halott.
forrás:jorda.selfip.net/tmp/teszt/poz.htm
ebben a kódban nem értem hogy az első és a többi nyitás késleltetése között mért kellett különbséget tennem, hogy ugyan olyan legyen a tempó.
Ja és a zárás is jó lenne ha késleltetett lenne, de nekem abba mindig megakadt.
Előre is köszi mindenkinek a segítséget.
Üdv: Jordanoff Péter
■ Egy olyan progit szeretnék írni, ahol gombokkal tudok diveket nyitni, de ha már nyitva van egy divem a következő nyitásakor, akkor előbb a nyitva lévőt zárja be, majd nyitja a kívánt divet.
Többféleképpen is próbálkoztam már
- a divek állapotát lekérdeztem, majd a nyitottat zártam, de ez buggos volt. (csak azt nem csinálta amit kellett volna)
- most a nyitott divet tároltam változóban, és a következő nyitásnál ezt zártam. Ez egyes firefox verziókon már működik, másokon buggos, de ie-n halott.
forrás:
- <html>
- <head>
- <style type="text/css">
- #sz_1, #sz_2, #sz_3 {
- position:relative;
- left:100px;
- top:10px;
- width:200px;
- height:1px;
- border: 1px solid white;
- overflow:hidden;
- visibility:hidden;
- background: red;
- }
- </style>
- <script type="text/javascript">
- var i=1;
- var timed;
- var ne;
- var nyitott;
- var fel;
- var speed;
- function roll(nev)
- {
- ne=nev;
- if (nyitott!=undefined)
- {
- speed="20";
- up(nyitott);
- }
- else
- {speed="4";}
- nyitott=nev;
- down();
- }
- function down()
- {
- document.getElementById(ne).style.visibility="visible";
- if (i<250)
- {
- document.getElementById(ne).style.height=i;
- i=i+1;
- }
- else
- {
- clearTimeout(timed);
- }
- timed=setTimeout("down()",speed);
- }
- function up(fel)
- {
- while (i>1)
- {
- i=i-10;
- document.getElementById(fel).style.height=i;
- }
- document.getElementById(fel).style.visibility="hidden";
- }
- </script>
- </head>
- <body style="padding:0px; margin:0px;">
- <img name="arrow" src="max.png" border="0" onClick="roll('sz_1')" />
- <img name="arrow" src="max.png" border="0" onClick="roll('sz_2')" />
- <img name="arrow" src="max.png" border="0" onClick="roll('sz_3')" />
- <div id="sz_1" align="center">szoveg1</div>
- <div id="sz_2" align="center">szoveg2</div>
- <div id="sz_3" align="center">szoveg3</div>
- </body>
- </html>
ebben a kódban nem értem hogy az első és a többi nyitás késleltetése között mért kellett különbséget tennem, hogy ugyan olyan legyen a tempó.
Ja és a zárás is jó lenne ha késleltetett lenne, de nekem abba mindig megakadt.
Előre is köszi mindenkinek a segítséget.
Üdv: Jordanoff Péter
segítség?
Először is én a helyedben egységesíteném a nyitó/záró függvény hívását.
(Mindenkettőt paraméterezve hívd, ne trüközz)
Amikor a "roll" függvény hívod, akkor az elejére beteszel egy ciklussal végig mész a div-eken és mindre meghívod a bezáró fggv-t. A nyitást meg már beletetted.
for (var i = 0; i<divs.length; i++) {
if (divs[i].id.indexOf("sz_")) {
up(divs[i]);
}
}
Remélem tudtam segíteni.
üdv, Gábor
köszönöm
Nekem is volt mar szuksegem
Ime egy pelda arra ami neked kell:
http://demos.mootools.net/Accordion
köszönöm
De kérdésem lenne, hogy ha te is foglalkoztál vele, nincs-e meg a js file kibogozva?
Annyit nem értek még, hogy a divet amit nyitok, annak a magasságát hogy tudnám beállítani, és hogy overflow:hidden; legyen. A css-sel sokat nem értem el nála. Szerintem a js valahol definiálja, de sajna abban a dzsungelban nem találtam meg semmit.
Accordion
ajánlom neked ezt az oldalt: