Centralt innehåll
- Fördjupning i märkspråk där det huvudsakliga innehållet är standarderna för HTML och CSS med särskilt fokus på responsiv design.
- Ramverk eller klassbibliotek inom design eller skriptspråk.
- Skriptspråk för webbutveckling på klientsidan och dokumentobjektsmodell.
- Riktlinjer för god praxis inom webbutveckling.
- Uppnående av interoperabilitet genom att följa standarder och testa på olika plattformar.
- Kvalitetssäkring av applikationens funktion och validering av kodens kvalitet.
- Terminologi inom området webbutveckling.
Fakta
1. BOM och Datum
BOM (Browser Object Model) definierar hur man kommer åt en webbläsare från JavaScript och kan ändra värden. Det finns ingen officiell standard för BOM, men de flesta moderna webbläsare har samma metoder och egenskaper för åtkomst med JavaScript.
Webbläsarfönstrets storlek| Metod | Beskrivning | Exempel |
|---|---|---|
window.innerHeight | inre höjd på webbläsarfönstret. Returneras storleken i pixlar. | |
window.innerWidth | inre bredden på webbläsarfönstret. Returneras storleken i pixlar. | |
| Inre bredd/höjd inkluderar inte verktygslister (toolbars) och scrollningslister (scrollbars). | ||
Metoder på webbläsarfönster
| Metod | Beskrivning | Exempel |
|---|---|---|
window.open() | öppnar ett nytt webbläsarfönster. | |
window.close() | stänger aktuellt webbläsarfönster. | |
window.moveTo() | flytta aktuellt webbläsarfönster. | |
window.resizeTo() | ändra storlek på aktivt webbläsarfönster. |
Egenskaper på skärmen
| Metod | Beskrivning | Exempel |
|---|---|---|
window.screen.width | returnerar bredden på användarens skärm i pixlar. | Exempel |
window.screen.height | returnerar höjd på användarens skärm i pixlar. | Exempel |
window.screen.availWidth | returnerar bredden på skärmen, minus GUI som Windows Taskbar. | Exempel |
window.screen.availHeight | returnerar höjden på skärmen, minus GUI som Windows Taskbar. | Exempel |
Några metoder till
| Metod | Beskrivning | Exempel |
|---|---|---|
window.location.assign() | laddar ett nytt HTML-dokument. | Exempel |
window.history.back() | samma som att klicka bakåt i webbläsaren. | |
window.history.forward() | samma som att klicka framåt i webbläsaren. |
Dialogrutor
| Metod | Beskrivning | Exempel |
|---|---|---|
window.alert("sometext") | alert box, kan klicka "OK". | Exempel |
window.confirm("sometext") | confirm box, kan klicka "OK" eller "Avbryt".
Returnerar true om "OK" klickas, annars returneras false. | Exempel |
window.prompt("sometext","defaultText") | prompt box, kan mata in värden och klicka "OK" eller "Avbryt"
Returnerar inmatat värde om "OK" klickas, annars returneras null. | Exempel |
2. JavaScript Tidshändelser (Timing Events)
JavaScript tillåter att kod körs vid definierade tidsintervall. De tidsintervallen kallas tidshändelser (timing events).
| Metod | Beskrivning | Exempel |
|---|---|---|
window.setTimeout(function, milliseconds) | Kör en funktion efter väntat en viss tid (i millisekunder). | Exempel |
window.setInterval(function, milliseconds) | Samma som setTimeout, men fortsätter att anropa funktionen. | Exempel |
window.clearInterval(timerVariable) | Stoppar anropet av funktionen som anges i setInterval. | Exempel |
Koden window. kan utelämnas i JavaScript-koden, dvs t.ex. window.setTimeout kan skrivas som setTimeout
Exempel 1 - setTimeout
<!DOCTYPE html>
<html>
<body>
<h1>JavaSript setTimeout()</h1>
<p id="demo">Här visas när 2, 4, och 6 sekunder har passerat.</p>
<script>
"use strict";
setTimeout(myTimeout1, 2000);
setTimeout(myTimeout2, 4000);
setTimeout(myTimeout3, 6000);
function myTimeout1()
{
document.getElementById("demo").innerHTML = "2 sekunder";
}
function myTimeout2()
{
document.getElementById("demo").innerHTML = "4 sekunder";
}
function myTimeout3()
{
document.getElementById("demo").innerHTML = "6 sekunder";
}
</script>
</body>
</html>
Exempel 2 - setTimeout
<!DOCTYPE html>
<html>
<body onload="startTime()">
<h1>JavaScript Klocka</h1>
<p id="txt"></p>
<script>
"use strict";
function startTime()
{
var today = new Date();
var hour = today.getHours();
var min = today.getMinutes();
var sec = today.getSeconds();
min = checkTime(min);
sec = checkTime(sec);
document.getElementById('txt').innerHTML = hour + ":" + min + ":" + sec;
setTimeout(startTime, 1000);
}
function checkTime(i)
{
if (i < 10)
{
i = "0" + i; // add zero in front of numbers < 10
}
return i;
}
</script>
</body>
</html>
Exempel - setInterval
<!DOCTYPE html>
<html>
<body>
<button onClick="setInterval(myCounter, 1000)">Starta räknare</button>
<p id="demo">Klicka på knappen för att starta räknaren, som räknar hela tiden.</p>
<script>
"use strict";
var counter = 0;
function myCounter()
{
document.getElementById("demo").innerHTML = counter++;
}
</script>
</body>
</html>
Exempel 1 - clearInterval
<!DOCTYPE html>
<html>
<body>
<button onClick="startCounter();">Starta räknare</button>
<p id="demo">Klicka på knappen för att starta räknaren, som räknar hela tiden.</p>
<button onClick="stopCounter();">Stoppa räknare</button>
<script>
"use strict";
var counter = 0;
var myTimer = 0;
function startCounter()
{
myTimer = setInterval(myCounter, 1000);
}
function myCounter()
{
document.getElementById("demo").innerHTML = counter++;
}
function stopCounter()
{
clearInterval(myTimer);
}
</script>
</body>
</html>
Exempel 2 - clearInterval
<!DOCTYPE html>
<html>
<body>
<p id="demo">Klocka</p>
<button onclick="clearInterval(myTimer)">Stopp</button>
<script>
"use strict";
var myTimer = setInterval(myClock, 1000);
function myClock()
{
document.getElementById("demo").innerHTML = new Date().toLocaleTimeString();
}
</script>
</body>
</html>
3. Datum
Datum objekt skapas med new Date().
| Metod | Exempel |
|---|---|
new Date() | Exempel |
new Date(year, month, day, hours, minutes, seconds, milliseconds) | Exempel |
new Date(date string) | Exempel |
| JavaScript räknar månader från 0 till 11. Januari är 0 och december är 11 | |
Det finns fler sätt att skapa datum, se mer på w3schools.
ISO 8601 är den internationella standarden för att representera datum och tid. ISO 8601 syntaxen (YYYY-MM-DD) är också det datum-formatet som JavaScript föredrar.
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript ISO Dates</h1>
<p id="demo"></p>
<script>
"use strict";
var d = new Date("2021-03-25");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
3.1 Tidszoner
När du ställer in ett datum, utan att ange tidszon, kommer JavaScript att använda webbläsarens tidszon. När du hämtar ett datum, utan att ange tidszon, konverteras resultatet till webbläsarens tidszon.3.2 Hämta information från datum-objekt
| Metod | Beskrivning | Exempel |
|---|---|---|
getFullYear() | Get the year as a four digit number (yyyy) | Exempel |
getMonth() | Get the month as a number (0-11) | Exempel |
getDate() | Get the day as a number (1-31) | Exempel |
getHours() | Get the hour (0-23) | Exempel |
getMinutes() | Get the minute (0-59) | Exempel |
getSeconds() | Get the second (0-59) | Exempel |
getMilliseconds() | Get the millisecond (0-999) | Exempel |
getTime() | Get the time (milliseconds since January 1, 1970) | Exempel |
getDay() | Get the weekday as a number (0-6) | Exempel |
Date.now() | millisekunder sedan 1970-01-01 | Exempel |
3.3 Jämför datum
Exempel på att jämföra datum
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<p id="test"></p>
<script>
"use strict";
var today, someday, text;
today = new Date();
someday = new Date();
someday.setFullYear(2100, 0, 14);
if (someday > today)
{
text = "Today is before January 14, 2100.";
}
else
{
text = "Today is after January 14, 2100.";
}
document.getElementById("demo").innerHTML = text;
document.getElementById("test").innerHTML = someday - today;
</script>
</body>
</html>
Begrepp
BOM: Browser Object Model, definierar hur webbläsaren är uppbyggd och hur man kommer åt att ändra värden med JavaScript.
Selektor: Taggnamn, class, id eller en kombination av dem som identifierar element.
setTimeout Kör en funktion en gång efter väntat en viss tid.
setInterval Kör en funktion med ett visst tidsintervall.
clearInterval Stoppar en funktion som körs med ett visst tidsintervall.
Länkar
w3schools: JavaScript Tidshändelser
Film
Övningar
Datum
Övning 1 Övning 2Inlämningsuppgift
Prompt Problem
Använd AI för att lösa följande uppgift.
Användaren ska kunna ge godtycklig framtida tidsangivelse (datum & tid).
En räknare ska sedan räkna ned antal sekunder kvar till den angivna tiden.
Nedräkningen måste stanna när tiden gått ut (stoppa intervall-anropen). Ingen nedräkning vid felaktig inmatning, dvs tid som redan varit.
Angiven framtida datum och tid ska bara kontrolleras/läsas en gång, inte i varje intervall,
dvs inte varje sekund. Den är ju detsamma tills ny matas in.
Om nytt framtida datum och tid skrivs in måste det föregående intervallet stoppas, annars skapas
nya intervall hela tiden som kommer att köras parallellt och ta upp datorns prestanda.
Kontroll att inte tid som redan varit anges.
Styla layouten och all CSS ska ligga i en extern CSS.
Layouten ska vara responsiv och ingen horisontell skrollning vid minskning webbläsarfönstret.
All JavaScript ska ligga i en extern JavaScript-fil.
JavaScriptet ska använda addEventListener för att koppla händelser till funktioner.
All koppling till händelser (events) i HTML-koden ska göras i en init-funktion i JavaScript-filen.
Anonyma funktioner får användas, men inte anonyma funktioner i anonyma funktioner.
Definiera inte funktioner i andra funktioner.
Exempel på lösning från tidigare år
Krav:
Använd taggen <input> med en typ för datum/tid, se w3schools beskrivning av <input>
Tips:
Använd webbläsarens JavaScript-konsol (F12 - console). När saker inte fungerar är det oftast ett fel som
skrivs ut i konsolen. Konsolen hjälper dig att hitta fel!
Kontrollera:
- Validera HTML
- Validera CSS (om du har någon)
- Använd strict mode.
- Inga fel i konsolen när JavaScriptet körs (F12 - console).
- Ingen JavaScript i HTML-koden
- du har indenterat html & css koden
- startsidan heter index.html
- filnamn med små bokstäver, inga mellanslag eller åäö
- Som med all programmering ska koden vara indenterad, ha bra variabelnamn och vara översiktligt kommenterad.
Lämna in:
Packa (zippa) ihop projektet och lämna in den