Avatar billede tvilling53 Seniormester
09. april 2019 - 15:56 Der er 4 kommentarer og
2 løsninger

variabler på tværs af sider

Hej, håber nogen kan hjælpe. Det er måske min manglende viden der gør at jeg  forsøgt at få en variabelværdi hentet på en side hvor variablen ikke er oprettet.

Index.html.
<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="js_array.js"></script>
        <script src="html_form.js"></script>
        <script>
            var login_array = ["mig", "selv"];
            login_array.push("sagde");
            function forside()
            {    window.location = 'forside.html';
            }
            function myFunction()
            {    login_array = saet_login('manden','atter');
                login_array.push("tørt");
                document.getElementById("demo1").innerHTML = login_array;
            }
        </script>
    </head>
  <body >
    <button onclick="myFunction()">Indsæt i array</button>
    <button onclick='forside()'>Forside</button>
    <p id="demo"></p>
    <p id="demo1"></p>
    <script>
        document.getElementById("demo").innerHTML = login_array;
       
    </script>
  </body>
</html>
Arrayet bliver forøget , men når jeg loader login1.html er der intet i arrayet.

login1.html

<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="js_arrays.js"></script>
    </head>
  <body>
        <p id="demo"></p>
        <script>
            document.write("login_array i document.write = " );
            document.write(login_array[1]);
            document.getElementById("demo").innerHTML = login_array;
        </script>
    </body> 
</html>
Er der en fejl som jeg ikke kan finde eller er jeg ude i noget der ikke kan lade sig gøre.
På forhånd tak
Avatar billede Slater Ekspert
09. april 2019 - 16:03 #1
Du er ude i noget der ikke kan lade sig gøre... på den måde.

Når du skifter en side bliver Javascript-motoren stoppet helt og alle variabler forsvinder. Du vil aldrig bare kunne tilgå en variabel der eksisterede tidligere på en anden side uden videre.

For at kunne det, er du nødt til at gemme værdien et mere permanent sted. I gamle dage brugte man enten server-side databaser eller cookies til den slags. Det gør man stadig i dag, men der er kommet en ekstra mulighed, der er lidt lettere at arbejde med: localStorage. Gem noget i localStorage (eller sessionStorage, som er det samme bortset fra at det slettes når browseren lukkes helt), så kan du tilgå det så tosset du vil - så længe dine sider er på samme domæne.
Avatar billede tvilling53 Seniormester
09. april 2019 - 16:07 #2
Hvordan oprettes localStorage eller er det PHP der er tale om???
Avatar billede Slater Ekspert
09. april 2019 - 16:11 #3
Det er Javascript. Det gør du bare ved at skrive:

localStorage.setItem('navn', 'værdi');

Og så kan du hente værdien igen med

localStorage.getItem('navn');

Men husk at de data bliver liggende der for evigt som standard. Brug det sparsomt, eller brug sessionStorage i stedet. Det er præcis det samme, bare "session" i stedet for "local".
Avatar billede tvilling53 Seniormester
09. april 2019 - 16:16 #4
Vil det så sige at hvis det bliver nødvendig så tildeler man værdier på samme måde som enhver anden variabel?
Avatar billede Slater Ekspert
09. april 2019 - 16:23 #5
Ikke helt forstået.

Værdien i localStorage bliver altid gemt som en streng, så hvis du vil gemme f.eks. arrays eller objekter, er du nødt til at serialisere dem først, hvilket som regel gøres som JSON. med JSON.stringify() og så JSON.parse() for at få dem tilbage til objekter igen.
Avatar billede tvilling53 Seniormester
09. april 2019 - 16:28 #6
Så har jeg noget at lære, så jeg takker for indsatsen.
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