Gå til innhold

PHP og Javascript


Anbefalte innlegg

Hei.

 

Var litt usikker på hvor jeg skulle poste denne, men.. Sitter med en kode for å toggle en div som ser slik ut;

 

function toggle() {
var ele = document.getElementById("toggle");
var text = document.getElementById("display");
if(ele.style.display == "block") {
  ele.style.display = "none";
  }
else {
 ele.style.display = "block";
}

--------------------------------

<h2  id="display" onClick="javascript:toggle();">Show/Hide</h2>
<div id="toggle" style="display:block;">

 

 

Skulle gjerne hatt websesjonen til å huske din toggle, og tenkte en fin løsning kunne vært å lagre display status som $_SESSION['toggle'];

ex

function toggle() {
var ele = document.getElementById("toggle");
var text = document.getElementById("display");
if(ele.style.display == "block") {
  ele.style.display = "none";
  <?php $_SESSION['toggle'] = "none"; ?>
  }
else {
 ele.style.display = "block";
 <?php $_SESSION['toggle'] = "block"; ?>
}
--------------------------------
<h2  id="display" onClick="javascript:toggle();">Show/Hide</h2>
<div id="toggle" style="display:
<?php if($_SESSION['toggle']){ echo $_SESSION['toggle']; } else { echo "block"; } ?>">

 

Finnes sikkert lettere måte å gjøre dette på (Tenkte jeg skulle unngå å lage en js cookie på det). MEN! Problemet er at PHP ser ikke ut til å reagere på IF/ELSE statementen i scriptet. Den leser begge linjene så $_SESSION['toggle'] vil alltid ha value "block".

 

Noen som vet hvordan jeg kan løse det med php i en js if/else? Eller har en annen god løsning?

Endret av TobiasG
Lenke til kommentar
Videoannonse
Annonse

Kan være en fordel å ta i bruk jQuery, toggle() funksjonen der er veldig enkel og praktisk

$('#idnavn').toggle(); // skjul hvis vist, vis hvis skjult
$('#idnavn').toggle(false); // alltid skjul
$('#idnavn').toggle(true); // alltid vis

 

En annen bruker spurte nylig om noe tilsvarende: http://www.diskusjon...owtopic=1466880

 

Husk PHP er server side scripting, Javascript er brower/client side. Så PHP er ikke klar over hva javascript gjør, om man ikke tar i bruk ajax. Men PHP er ikke nødvendig til å løse dette problemet.

Endret av Crowly
Lenke til kommentar

Prøvde meg på

$('#idnavn').toggle(); // skjul hvis vist, vis hvis skjult

 

Men ser ikke ut til at den husker posisjonen. Så snart jeg refresher siden så mister den posisjonen, så da er jeg igjen like langt. Dette var jo hele meningen med å legge display verdien i en php string.

Lenke til kommentar

Prøvde meg på

$('#idnavn').toggle(); // skjul hvis vist, vis hvis skjult

 

Men ser ikke ut til at den husker posisjonen. Så snart jeg refresher siden så mister den posisjonen, så da er jeg igjen like langt. Dette var jo hele meningen med å legge display verdien i en php string.

Dette er fordi klienten ikke husker siste state, du lagrer den aldri. (Og om du vil den skal lagre noe må du eksplisitt gjøre det).

 

F.eks. kan du bruke javascript og sette en cookie i nettleseren til den siste staten, for så å hente den ut fra cookien når brukeren refresher siden, og sette den til den staten du har lagret i cookien.

Lenke til kommentar

Evt. kan du ta en titt på web storage: http://w3schools.com/html/html5_webstorage.asp

localStorage.getItem('navn');  // hent 
localStorage.setItem('navn', verdi) // lagre

 

Men du vil fortsatt lagre noe på brukerens pc, men det blir husket på selv om bruker lukker nettleseren, noe en session ikke gjør.

Alternativt må du ta i bruk ajax slik at det ikke er behov for å refreshe siden.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...