Permalänk
Medlem

JavaScript - localStorage

Hej, jag försöker göra en enkal lösning där jag skriver in två tal på en sida. På nästa sida ska den plussas ihop. Dock funkar det inte, utan måste skriva in talen, trycka på knappen, få upp sidan där resultatet ska komma, backa och trycka igen för att uträkningen ska fungera.

Har någon en lösning på detta?

HTML1

Citat:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="app.js" defer></script>
<title>Document</title>
</head>
<body>
<a href="faktura.html">Visa Faktura</a>

<form>

<input type="number" id="kostnad1" placeholder="Kostnad Produkt 1">
<input type="number" id="kostnad2" placeholder="Kostnad Produkt 2">

</form>
<button class="btn">Beställ</button>

</body>
</html>

HTML2

Citat:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="app2.js" ></script>
</head>
<body>
<a href="index.html">Hem</a>
<div class="divfaktura"></div>
</body>
</html>

JS1

Citat:

const kostnadEtt = document.querySelector("#kostnad1").value;
const kostnadTva = document.querySelector("#kostnad2").value;
const btn = document.querySelector(".btn");
const convertKostEtt = Number(kostnadEtt);
const convertKostTva = Number(kostnadTva);
const data = convertKostEtt + convertKostTva;

btn.addEventListener("click", (e)=>{
e.preventDefault();
console.log(data)

localStorage.setItem("data", data);
setTimeout(function(){
window.document.location="./faktura.html";
}, 60000);

})

JS2

Citat:

function ShowData(){
const div = document.querySelector(".divfaktura")

div.innerHTML= localStorage.getItem("data");
}

//DOMContentLoaded event väntar tills documentet laddas upp helt sedan anropar
//sedan anropar denna functionen inuti den
document.addEventListener("DOMContentLoaded", function (){
ShowData();
})

Permalänk
Medlem

Värdet är alltid noll för du räknar inte ut värdet efter du submittat formen. Du räknar ut värdet direkt när sidan laddas och cachar det i en variabel. Båda inputs är 0 när sidan laddats och de är fortfarande 0 när du submittar.

Permalänk

@CarlB:
Tja!

Flytta in alla dina 'const' innanför knapptrycket (förutom knappen såklart), så det sker när du trycker på knappen, nu sker det bara vid init

Permalänk
99:e percentilen

Använd [code] när du klistrar in kod, så blir det lättare att läsa den (särskilt indentering). Better SweClockers hjälper dig infoga sådana taggar så att du slipper skriva dem manuellt, men så här gör man iallafall:

[code]
console.log("Hello!");
[/code]

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
99:e percentilen

Några generella tips:

  • <html lang="en"> verkar inte stämma så väl överens med sidans faktiska innehåll. Föreslår <html lang="sv">.

  • placeholder-attributet bör representera ett exempelvärde, snarare än en beskrivning. I ditt fall skulle typ placeholder="5" funka.

  • Även nullära funktioner kan skrivas med arrow function-syntax. Det vill säga, istället för

    function(){ window.document.location="./faktura.html"; }

    kan du skriva

    () => { window.document.location="./faktura.html"; }

  • Du kan utelämna parenteserna runt argumentet när du skriver en unär funktion som ett lambdauttryck:

    const id = x => x;

    (Finns säkert bra argument för att inte göra det. Men det går. Jag gillar det.)

Visa signatur

Skrivet med hjälp av Better SweClockers