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: