getElementById
Sziasztok!
Remelem nem fog az elso segitokesz ember lehurrogni! A problemam megoldasa szerintem elegge egyszeru, ezert aki jaratosabb a temaban az talan konnyen valaszolni tud ra. A hangsuly most a JavaScript fuggvenyen lenne.
Van par link, amik az oldalon belul div-eket jelenitenenek meg.
Linkek:Megjelenites:JavaScript Fuggveny:Tehat a lenyeg a JavaScirpt fuggvenyen lenne. Ha csak egy link van akkor a megjelenit fuggvenyben csak egy sor letezne:
document.getElementById('vers_1').style.display='none';
Ha viszont tobb link, akkor:
document.getElementById('vers_1').style.display='none';
document.getElementById('vers_2').style.display='none';
es igy tovabb.
Ezt gondolom egy for ciklussal kell megcsinalni, csak az a baj, h nem tudom kivitelezni.
■ Remelem nem fog az elso segitokesz ember lehurrogni! A problemam megoldasa szerintem elegge egyszeru, ezert aki jaratosabb a temaban az talan konnyen valaszolni tud ra. A hangsuly most a JavaScript fuggvenyen lenne.
Van par link, amik az oldalon belul div-eket jelenitenenek meg.
Linkek:
$result = mysql_query ("SELECT * FROM `kolto` ORDER BY 'position'");
while($row = mysql_fetch_array($result)) {
$osztaly = "menu" . $row['id'];
echo "<a href='$osztaly.html' class='menuLink'>" . $row["szerzo"] . "</a><br />";
$versek = mysql_query ("SELECT * FROM `versek` WHERE subject_id = {$row["id"]}");
echo "<ul class='menu' id='$osztaly'>";
while($sor = mysql_fetch_array($versek)) {
$megjelen = "vers_" . $sor["id"];
echo "<li><a href='#' onClick='megjelenit(\"$megjelen\")'>{$sor["cim"]}</a></li><br />";
}
echo "</ul>";
}
$result = mysql_query ("SELECT * FROM `versek` ORDER BY `id`");
while($row = mysql_fetch_array($result)) {
$szamsor = "vers_" . $row['id'];
echo "<div id='$szamsor' style='display:none;'>";
echo "<center><h4 style=\"text-indent: 25px;\">{$row["cim"]}</h4></center>";
echo "<h5><center>". nl2br($row["vers"]) ."</center></h5><br /><br />";
echo "</div>";
}
function megjelenit(mit) {
document.getElementById('vers_1').style.display='none';
document.getElementById('vers_2').style.display='none';
document.getElementById('vers_3').style.display='none';
document.getElementById(mit).style.display='';
}
document.getElementById('vers_1').style.display='none';
Ha viszont tobb link, akkor:
document.getElementById('vers_1').style.display='none';
document.getElementById('vers_2').style.display='none';
es igy tovabb.
Ezt gondolom egy for ciklussal kell megcsinalni, csak az a baj, h nem tudom kivitelezni.
inkabb php
Ez is ingovanyos talaj a szamomra, pedig mar elojott a problema maskor is.
Tehat az adatbazisbol lekerdezett adatokat (vers_1, vers_2, vers_4) gondolom egy tombbe kellene belerakni, csak nem tudom hogy lesz belole tomb.
A tomb elemein vegiglepkedve javascriptben pedig eloallitani a fentebb leirt sorokat.
jó az út
or prototype
http://prototypejs.org/api/array/each
vagy jquery
Kosz Norbi es epfe a segitseget
Beletettem a megjelenit fuggvenybe az altalatok javasolt kodot a megjelenites ment is de a for cikluson meg valamit valtoztatni kene, mert az elozo divet nem tavolitja el.
Vegul arra gondoltam maradok az elso valtozatnal, csak meg ra kellene jonnom, hogy mi a hiba a for ciklusban.
eltérő logika
Úgy képzelem, hogy pl. a generált div-eket CSS-el display:none-ra állítod és létrehozol egy CSS classt, mondjuk show néven, amely beállítja az adott elemet display:block-ra.
Ezzel a módszerrel el tudod különíteni a különböző logikákat, és nem kell mindig módosítanod pl. a frontend részt, ha megváltoztatod a lekérdezés kimenetét. Ezzel kapcsolatban jelezném, hogy próbáld elkerülni a kimenet generálásakor a lekérdezés és a megjelenítés kódjának keverését. Ez később megtérül.
Végül, nem teljesen világos, hogy pl. azt szeretnéd-e, hogy onclickre adott tartalom megjelenése mellett a többi elem elrejtése hajtódjon-e végre?
Yaanno en se vagyok nagy js guru
Pontosabban ez lenne a lenyege, de ahogy a fentebbi valaszban leirtam most ott tartok, hogy a megjelenites sikerul a megjelenit fuggvennyel. Csak az eltuntetes nem. Van ra otleted hogy miert nem?
Szoval eddig ennyi mukodik a kodbol, ez megjeleniti azt, ami a css-ben display: none-ra van allitva.
De a Norbert altal ajanlott for for ciklus valami miatt nem mukodik.
Takarékláng
A te megoldási irányod (a profik szerint) azért nem célravezető, mert nem takarékos - gondolj bele, ha mondjuk egy oldalon több száz költő adatát kell manipulálni. Az alább javasolt megoldás pont annyit módosít, amennyit kell, a többit a CSS-re bízza.
CSS:
Kosz yanno