Vad är JavaScript?
JavaScript är ett programmeringsspråk som gör webbsidor interaktiva och dynamiska. Medan HTML skapar strukturen och CSS hanterar utseendet, är JavaScript det som tillför liv och funktionalitet till din webbsida.
Med JavaScript kan du:
- Svara på användarinteraktioner som klick och tangentryckningar
- Uppdatera innehåll dynamiskt utan att ladda om sidan
- Validera formulär innan de skickas
- Skapa animationer och visuella effekter
- Hämta data från servrar
Så lägger du till JavaScript
Det finns flera sätt att inkludera JavaScript i din webbsida:
1. Inline JavaScript
<button onclick="alert('Hej världen!')">Klicka här</button>
2. Intern JavaScript
<script>
alert('Hej världen!');
</script>
3. Extern JavaScript-fil (rekommenderas)
<script src="script.js"></script>
Grundläggande JavaScript-syntax
Variabler
Variabler lagrar värden som du kan använda senare i din kod:
// Olika sätt att deklarera variabler
var gammalVariabel = "Använd inte var";
let modernaVariabel = "Använd let för variabler som ändras";
const konstant = "Använd const för värden som inte ändras";
// Exempel
let namn = "Anna";
let ålder = 25;
const PI = 3.14159;
Datatyper
JavaScript har flera grundläggande datatyper:
// Siffror
let heltal = 42;
let decimaltal = 3.14;
// Strängar (text)
let text = "Hej världen!";
let citattecken = 'Enkla citattecken fungerar också';
// Booleska värden
let sann = true;
let falsk = false;
// Arrayer (listor)
let färger = ["röd", "grön", "blå"];
let nummer = [1, 2, 3, 4, 5];
// Objekt
let person = {
namn: "Anna",
ålder: 25,
stad: "Stockholm"
};
Funktioner
Funktioner är kodblock som utför specifika uppgifter:
// Funktionsdeklaration
function hälsa(namn) {
return "Hej " + namn + "!";
}
// Funktionsanrop
let meddelande = hälsa("Anna");
console.log(meddelande); // Skriver ut: Hej Anna!
// Arrow function (modern syntax)
const multiplicera = (a, b) => {
return a * b;
};
// Kort arrow function
const addera = (a, b) => a + b;
DOM-manipulation
DOM (Document Object Model) är hur JavaScript interagerar med HTML-element:
Välja element
// Välja element med ID
const knapp = document.getElementById('min-knapp');
// Välja element med klass
const element = document.querySelector('.min-klass');
const allaElement = document.querySelectorAll('.min-klass');
// Välja element med tagg
const stycken = document.getElementsByTagName('p');
Ändra innehåll
// Ändra text
const rubrik = document.querySelector('h1');
rubrik.textContent = "Ny rubrik";
// Ändra HTML
const div = document.querySelector('#innehåll');
div.innerHTML = '<p>Nytt stycke</p>';
// Ändra attribut
const bild = document.querySelector('img');
bild.src = 'ny-bild.jpg';
bild.alt = 'Beskrivning av ny bild';
Ändra styling
const element = document.querySelector('.min-klass');
// Ändra enskilda CSS-egenskaper
element.style.color = 'red';
element.style.fontSize = '20px';
// Lägga till/ta bort CSS-klasser
element.classList.add('ny-klass');
element.classList.remove('gammal-klass');
element.classList.toggle('aktiv');
Event-hantering
Events låter dig svara på användarinteraktioner:
Click-events
const knapp = document.querySelector('#min-knapp');
knapp.addEventListener('click', function() {
alert('Knappen klickades!');
});
// Med arrow function
knapp.addEventListener('click', () => {
console.log('Knappen klickades!');
});
Formulär-events
const formulär = document.querySelector('#kontakt-formulär');
formulär.addEventListener('submit', function(event) {
event.preventDefault(); // Förhindrar att formuläret skickas normalt
const namn = document.querySelector('#namn').value;
const email = document.querySelector('#email').value;
if (namn === '' || email === '') {
alert('Vänligen fyll i alla fält');
return;
}
console.log('Formulär skickat:', { namn, email });
});
Andra användbara events
// Mus-events
element.addEventListener('mouseenter', () => console.log('Mus in'));
element.addEventListener('mouseleave', () => console.log('Mus ut'));
// Tangentbord-events
document.addEventListener('keydown', (event) => {
console.log('Tangent tryckt:', event.key);
});
// Fönster-events
window.addEventListener('load', () => {
console.log('Sidan är helt laddad');
});
window.addEventListener('scroll', () => {
console.log('Användaren scrollar');
});
Villkor och loopar
If-satser
let ålder = 18;
if (ålder >= 18) {
console.log('Du är myndig');
} else if (ålder >= 13) {
console.log('Du är tonåring');
} else {
console.log('Du är barn');
}
// Ternary operator (kort if-else)
let status = ålder >= 18 ? 'myndig' : 'minderårig';
Loopar
// For-loop
for (let i = 0; i < 5; i++) {
console.log('Nummer:', i);
}
// While-loop
let räknare = 0;
while (räknare < 3) {
console.log('Räknare:', räknare);
räknare++;
}
// Loopa genom array
const färger = ['röd', 'grön', 'blå'];
// For-of loop
for (const färg of färger) {
console.log('Färg:', färg);
}
// ForEach
färger.forEach(färg => {
console.log('Färg:', färg);
});
Praktiska exempel
Bildgalleri med JavaScript
// HTML
// <div class="galleri">
// <img id="huvud-bild" src="bild1.jpg" alt="Bild 1">
// <div class="miniatyrer">
// <img src="bild1.jpg" alt="Bild 1" class="miniatyr">
// <img src="bild2.jpg" alt="Bild 2" class="miniatyr">
// <img src="bild3.jpg" alt="Bild 3" class="miniatyr">
// </div>
// </div>
const huvudBild = document.getElementById('huvud-bild');
const miniatyrer = document.querySelectorAll('.miniatyr');
miniatyrer.forEach(miniatyr => {
miniatyr.addEventListener('click', () => {
huvudBild.src = miniatyr.src;
huvudBild.alt = miniatyr.alt;
});
});
Enkel räknare
// HTML
// <div class="räknare">
// <button id="minska">-</button>
// <span id="antal">0</span>
// <button id="öka">+</button>
// </div>
let antal = 0;
const antalElement = document.getElementById('antal');
const ökaKnapp = document.getElementById('öka');
const minskaKnapp = document.getElementById('minska');
ökaKnapp.addEventListener('click', () => {
antal++;
antalElement.textContent = antal;
});
minskaKnapp.addEventListener('click', () => {
antal--;
antalElement.textContent = antal;
});
Formulärvalidering
function valideraEmail(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
const formulär = document.querySelector('#registrering');
formulär.addEventListener('submit', function(event) {
event.preventDefault();
const namn = document.querySelector('#namn').value.trim();
const email = document.querySelector('#email').value.trim();
const lösenord = document.querySelector('#lösenord').value;
let felmeddelanden = [];
if (namn.length < 2) {
felmeddelanden.push('Namnet måste vara minst 2 tecken');
}
if (!valideraEmail(email)) {
felmeddelanden.push('Ogiltig e-postadress');
}
if (lösenord.length < 8) {
felmeddelanden.push('Lösenordet måste vara minst 8 tecken');
}
if (felmeddelanden.length > 0) {
alert(felmeddelanden.join('\n'));
} else {
alert('Formuläret är giltigt!');
// Här skulle du skicka data till servern
}
});
Vanliga misstag att undvika
- Glöm inte semicolon: Även om det inte alltid krävs, är det bra praxis
- Var försiktig med ==: Använd === för strikt jämförelse
- Kontrollera att element existerar: Innan du använder DOM-element
- Använd addEventListener: Istället för onclick i HTML
- Hantera fel: Använd try-catch för felhantering
Felsökning
Lär dig att använda utvecklarverktygen i webbläsaren:
// Skriv ut värden för att felsöka
console.log('Variabel värde:', minVariabel);
console.error('Fel uppstod:', felmeddelande);
console.warn('Varning:', varningsmeddelande);
// Debugger-satser
debugger; // Pausar exekvering i utvecklarverktyg
Nästa steg
Nu när du behärskar grunderna kan du utforska:
- Asynkron JavaScript (Promises, async/await)
- Fetch API för att hämta data från servrar
- Local Storage för att spara data i webbläsaren
- JavaScript-ramverk som React, Vue eller Angular
- Node.js för backend-utveckling
Slutsats
JavaScript är ett kraftfullt språk som öppnar upp oändliga möjligheter för interaktivitet på webben. Genom att behärska grunderna som variabler, funktioner, DOM-manipulation och event-hantering kan du skapa engagerande användarupplevelser.
Kom ihåg att övning är nyckeln till framgång. Börja med enkla projekt och bygg gradvis upp din komplexitet. Experimentera, gör misstag och lär dig av dem.
Vill du fördjupa dina JavaScript-kunskaper? Våra kurser täcker allt från grunderna till avancerade tekniker.