Avatar billede klgn Nybegynder
05. februar 2008 - 16:47 Der er 17 kommentarer og
2 løsninger

Læs mere funktion

Hejsa folkens!

Jeg sidder og roder med lidt web-hallo. Og jeg er ved at lave en kalender-ting. Jeg har lavet admin og alt det andet gejl i php.
Nu vil jeg imidlertid gerne have en læs mere funktion.

Tanken er, at jeg viser en liste over et antal kommende arrangementer i kalenderen. den første vises med overskrift og den tilhørende tekst og self dato.

På de øvrige posts vil jeg bare vises dato og overskrift. Nedenunder skal der så stå "Læs mere" og ved klik på den kommer teksten til kalenderposten frem.

Lidt af koden:

//Løkke, der sørger for det ansøgte antal kalenderposts vises
while ($row = mysql_fetch_array($udtraek_resterende_aktiviteter)) {
            list($d, $m, $y) = explode('-', $row[formateretdato]);
            echo "<h3>".$d."/".$m.": ".stripslashes($row[title])."</h3>\n";
           
                echo "<p><a href=\"\">Læs mere</a></p>\n";
}           

Ved klik på Læs mere skal den så vises stripslashes($row[text]) - men jeg ved ikke lige, hvordan det gøres, men jeg tænker, det kan gøres i JavaScript, hvorfor jeg har smidt mit spørgsmål her.

Håber forklaringen giver mening, og jeg beklager min lidt mindre heldige overskrift.
Har I uddybende spørgsmål, så fyr løs - så svarer jeg efter bedste evne:)

På forhånd tak!
Avatar billede w13 Novice
05. februar 2008 - 16:53 #1
//Løkke, der sørger for det ansøgte antal kalenderposts vises
while ($row = mysql_fetch_array($udtraek_resterende_aktiviteter)) {
            list($d, $m, $y) = explode('-', $row[formateretdato]);
            echo "<h3>".$d."/".$m.": ".stripslashes($row[title])."</h3>\n";
           
                echo "<p><a href=\"java script:void(0)\" onclick=\"ToggleDisplay('".$row[id]."')\">Læs mere</a></p>\n";
                echo "<div id=\"".$row[id]."\" style=\"display:none\">".stripslashes($row[text])."</div>\n";
}

Bemærk at jeg har benyttet $row[id] 2 steder.

Så skal du bare have javascript-funktionen her indsat et sted i koden (evt. i head-sektionen):

<script type="text/javascript" language="javascript">
function ToggleDisplay(id){
  id=document.getElementById(id).style.display;
  id=id=="none"?"block":"none"
}
</script>
Avatar billede klgn Nybegynder
05. februar 2008 - 17:19 #2
Jeg har smidt koden, du skrev, ind. Men når jeg klikker linket sker der ingenting hverken i firefox eller ie. Begge browsere melder dog heller ikke om fejl.
Avatar billede w13 Novice
05. februar 2008 - 18:32 #3
Smidt lige et link så eller hele din kode.

I øvrigt glemte jeg lige, at id'er ikke må begynde med et tal, så php'en skal f.eks. være:

//Løkke, der sørger for det ansøgte antal kalenderposts vises
while ($row = mysql_fetch_array($udtraek_resterende_aktiviteter)) {
            list($d, $m, $y) = explode('-', $row[formateretdato]);
            echo "<h3>".$d."/".$m.": ".stripslashes($row[title])."</h3>\n";
           
                echo "<p><a href=\"java script:void(0)\" onclick=\"ToggleDisplay('cal".$row[id]."')\">Læs mere</a></p>\n";
                echo "<div id=\"cal".$row[id]."\" style=\"display:none\">".stripslashes($row[text])."</div>\n";
}
Avatar billede klgn Nybegynder
05. februar 2008 - 19:30 #4
Avatar billede w13 Novice
05. februar 2008 - 20:11 #5
Prøv lige at rette:
<script type="text/javascript">
function ToggleDisplay(id){
  id = document.getElementById(id).style.display;
  id = id == "none" ? "block" : "none";
}
</script>
til:
<script type="text/javascript">
function ToggleDisplay(id){
  id = document.getElementById(id).style.display;
  id = id <> "none" ? "none" : "block";
}
</script>
Avatar billede klgn Nybegynder
05. februar 2008 - 20:28 #6
Stadig uden held:(
Avatar billede w13 Novice
05. februar 2008 - 20:41 #7
Ups:

<script type="text/javascript">
function ToggleDisplay(id){
  id = document.getElementById(id).style.display;
  id = id <> "block" ? "block" : "none";
}
</script>

Måske?
Avatar billede klgn Nybegynder
05. februar 2008 - 20:47 #8
No go

(jeg sætter stor pris på din hjælpsom- og ihærdighed...)
Avatar billede w13 Novice
05. februar 2008 - 21:43 #9
Stadig intet?

Så må vi debugge:

<script type="text/javascript">
function ToggleDisplay(id){
  alert(id);
  id = document.getElementById(id).style.display;
  alert(id);
  id = id <> "block" ? "block" : "none";
  alert(id);
}
</script>

Får du alerts op, når denne funktion bruges?
Avatar billede klgn Nybegynder
05. februar 2008 - 21:45 #10
nej, der sker intet...
Er du sikker på, at selve link-referencen er rigtig?

den ser således ud:
echo "<p><a href=\"java script:void(0);\" onclick=\"ToggleDisplay('cal".$row[id]."')\">Læs mere</a></p>\n";
echo "<div id=\"cal".$row[id]."\" style=\"display: none;\">".stripslashes($row[text])."</div>\n";
Avatar billede w13 Novice
05. februar 2008 - 22:27 #11
Den gi'r os da javascript-fejlen "Et objekt var ventet i linje 42". Det fortæller os, at noget er galt i funktionen.

Prøv lige at erstat javascriptet med:

<script type="text/javascript">
function ToggleDisplay(id){
  alert(id);
}
</script>
Avatar billede roenving Novice
06. februar 2008 - 00:51 #12
style.display er ikke et objekt, så det kan du ikke bruge på den måde !-)

<script type="text/javascript">
function ToggleDisplay(id){
  var st = document.getElementById(id).style;
  st.display = st.display != "block" ? "block" : "none";
}
</script>

-- og så skal du huske javascript sammelignings-operatorer !-)
Avatar billede w13 Novice
06. februar 2008 - 07:58 #13
(Damn!) Jeg var så sikker på, jeg havde brugt det andet før.
Avatar billede klgn Nybegynder
06. februar 2008 - 08:35 #14
Roenving> Super, det virker:)

Et andet lille spørgsmål. Er det muligt at "Læs mere" ændres til en anden tekst eksempelvis "Luk", når man klikker på den?
Avatar billede roenving Novice
06. februar 2008 - 13:48 #15
Jepz, så skal du medsende en reference til linket, f.eks.

echo "<p><a href=\"java script:void(0);\" onclick=\"ToggleDisplay('cal".$row[id]."',this)\">Læs mere</a></p>\n";

-- og så bliver funktionen:

<script type="text/javascript">
function ToggleDisplay(id,lnk){
  var st = document.getElementById(id).style;
  var show = st.display != "block";
  st.display = show ? "block" : "none";
  lnk.firstChild.nodeValue = show ? "Luk" : "Læs mere";
}
</script>
Avatar billede klgn Nybegynder
06. februar 2008 - 19:18 #16
Super, Roenving tak:)

Jeg vil dog gerne give Jer begge point, så smoder du et svar, Roenving, så får du 20 point, og så giver jeg 10 til w13 for ihærdigheden. Men det var nu Roenving, som fik skidtet til at virke, derfor får han 20 point.
Avatar billede w13 Novice
06. februar 2008 - 20:26 #17
Fint =)
Avatar billede roenving Novice
07. februar 2008 - 01:14 #18
Velbekomme '-)
Avatar billede roenving Novice
07. februar 2008 - 12:44 #19
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester