JavaScript – del2A
Syftet med detta häfte är att sammanfatta det viktigaste i JavaScript så kort och koncist som möjligt
men ändå tillräckligt omfattande för att ge god kännedom om en av de vanligaste teknikerna för att
skapa mer avancerade webbsidor. Kursdeltagarna ska med detta häfte som stöd kunna göra
avancerade webbsidor, förstå den bakomliggande tekniken samt ha god kännedom om prestandaoch säkerhetsaspekter.
Innehåll (JavaScript):
• JS – del1 : Introduktion, historik, bakgrund, egenskaper, objekt, variabler, villkor och loopar.
Operatorer, jämförelser och logiska operatorer. Alert- och Promptfunktionerna.
• JS – del2 : Formulär. Funktioner och returvärden. Händelsehantering. Infogning av JS-kod.
• JS – del3 : Mer om Objekt. DOM.
• JS – del4 : Stränghantering
• JS – del5 : Cookies
Olika sätt att infoga JavaScript i HTML-koden
• JavaScript kan infogas i en HTML sida på olika sätt.
1) I taggen <SCRIPT> i HTML-sidans huvud. använt i exempel tidigare.
2) Som en extern fil länkad till HTML-sidan.
Ex. <SCRIPT SRC="filnamn.js"></SCRIPT> istället för filnamn går det också bra med t.ex en URL
eller en relativ sökväg. Fördelen blir då att man kan länka den externa filen till flera sidor och
därmed förenkla översikten och uppdaterings möjligheten.
3) I en händelsehanterare som placeras i taggar i HTML-sidan.
Ex: onClick="alert(’Instruktionen du utförde var fel');" (för fullständigt exempel se anteckningar).
4) I en länk Ex: <A HREF="javascript:alert('Du klickade på en länk');">Klicka här</A>
Funktioner
• Används för att göra saker smidigare t.ex om en sak ska göras flera gånger.
• Kan anropas oändligt många gånger.
• Det finns fördefinierade och egna funktioner.
Exempel på fördefinierade funktioner
• I JavaScript finns det mängder av trevliga inbyggda funktioner inskrivna från början i själva språket.
• Exempel på dessa är typkonverteringsfunktionerna:
parseInt() och parseFloat() som omvandlar en sträng till en integer (heltal) respektive en sträng till ett
flyttal.
• eval() är en funktion som utvärderar en sträng som ett JavaScript uttryck eller som ett värde och som
antingen utför det eller returnerar värdet.
Exempel.
Om man deklarerar:
heltal = "10";
decimaltal = "6.77";
hexadecimaltal = "1A";
så ger parseFloat(decimaltal) värdet: 6.77
parseFloat(hexadecimaltal) värdet: NaN (Not a Number)
parseInt(decimaltal) ger värdet: 6
eval(10) ger värdet: 10
Exempel på egna funktioner
• Om ni t.ex behöver returnera värden från funktioner.
<HTML>
<HEAD><TITLE>Returnera ett värde från en funktion</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- deklarera funktionerna i huvudet så de är tillgängliga i kroppen
function kub(tal) {
return (tal * tal * tal);
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
svar=kub(10);
document.write(svar);
</SCRIPT>
</BODY>
</HTML>
I funktionshuvudet (function kub(tal)) betyder 'tal' att funktionen ska ta emot en inparameter.
Det returnerade värdet läggs i en variabel som sedan skrivs ut.
Det viktiga är att nyckelordet return finns med när funktionen ska returnera ett värde.
Värdet 10 sänds till funktionen som inparameter, värdet som räknats ut i funktionen returneras via
funktionsnamnet och tilldelas variabeln svar. svar-variabeln skrivs sedan ut med write-metoden i
objektet document.
Det andra sättet att göra samma sak på är genom att skriva funktionen inom SCRIPT-taggarna på
sidan.
Standard är dock att man brukar skriva funktioner i huvudet av hemsidan eller i en separat
fil(mer om det senare), för att få en bra översikt.
Egna och fördefinierade funktioner
<html>
<head>
<title>Funktioner</title>
<script language="JavaScript">
function Halsning(namn) {
alert("Hej," + namn);
}
</script>
</head>
<body>
<h1>Egen funktion som använder inbyggda funktioner</h1>
<p>Denna funktion hälsar på två individer</p>
<script LANGUAGE="JavaScript">
Halsning("Kalle");
Halsning("Musse");
</script>
</body>
</html>
Funktionen ovan använder den inbyggda funktionen alert för att skicka ett meddelande till användaren
via ett s.k alert-fönster som kommer upp.
Textsträngen "Kalle" skickas till funktionen som tar emot den och anropar den inbyggda funktionen
Alert som skriver ut ett meddelande i en Alert-box hos användaren.
Samma sak görs igen men med Musse.
Notera att den andra processen inte startar (d.v.s det andra namnet ej visas) förrän användaren tryckt
på OK, detta p.g.a att JavaScript exekveringen stoppas när Alert-meddelanden visas.
Händelsehantering
Javascript är ett händelsestyrt språk, d.v.s att de olika händelserna som användaren orsakar styr hur
programmet arbetar.
Att hantera dessa händelser är därför viktigt.
• OnClick satt som ett attribut till en knapp eller t.ex en bild, när användaren klickar på objektet
aktiverar händelsen.
Ex:
<HTML>
<HEAD>
<TITLE>Enkel händelsehantering</TITLE>
</HEAD>
<BODY BGCOLOR="WHITE">
<IMG SRC="netscape.jpg" onClick="alert('Du klickade på bilden');">
</BODY>
</HTML>
Det finns flera olika metoder av enkel händelsehantering se anteckningar för fler, mer ingående
information om händelsehantering kommer senare i kursen.
onClick (som ovan) samt onMouseOver och onMouseOut är exempel på enkel händelsehantering.
En annan händelsehantering som kan vara användbar är onLoad (när sidan laddas) och onUnload
(när sidan stängs).
Exempel händelsehantering
<html>
<head><title>Händelse</title></head>
<body>
<form>
<input type=button value = "Tryck här!" onClick = "alert('Duktigt!');">
</form>
</body>
</html>
Alertboxen används normalt inte till det ovan utan till att ge meddelanden om fel och bör inte
missbrukas i sitt syfte.
Exempel händelsehantering
<FORM>
Ange ditt namn:<BR>
<INPUT TYPE="text" NAME="namn" WIDTH="52">
<INPUT TYPE="button" VALUE="Skicka" onClick="alert(namn.value);">
</FORM>
Notera att man måste använda punktnotation för att komma åt värdet av variabeln namn.
Fler händelser
• Varje objekt har en egen uppsättning händelser t ex
- knappar och länkar: onClick
- document: onLoad
• Anropa händelse-hanterare
onClick="sayYes();">
Här anropas funktionen sayYes() när vi klickar på knappen med texten "klicka här".
• Lista på händelser och var de kan användas:
onBlur
window (BODY), Text, Select, Textarea, Password (INPUT)
onChange
Text, Select, Textarea, FileUpload (INPUT)
onClick
Anchor (A), Button (INPUT)
onError
Image (IMG), window (måste skrivas)
onFocus
window (BODY), Text (INPUT)
onKeyDown document, Image, Link, Textarea
onKeyUp
document, Image, Link, Textarea
onLoad
Image (IMG), window (BODY, FRAMESET)
onMouseDown document, Link, Button
onMouseOut Area, Link
onMouseOver Link
onReset
Form
onSubmit
Form
onUnload
window
OBJEKT
I JavaScript finns det 3 olika typer av Objekt.
1. Webbläsarobjekt.
2. Inbyggda objekt (se JavaScript del3).
3. Egna objekt (tas ej upp inom kursens ram).
Objekten och händelsehanterarna är tillsammans det viktigaste i JavaScript.
DOM - Document Object Model
DOM (Document Object Model) är modellen efter vilken en webbläsare är uppbyggd. Alla
objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.
De olika rutorna representerar JavaScripts olika fördefinierade objekt i webbläsaren.
Via dessa objekt kan olika information hämtas och olika funktioner nås:
window ger möjlighet till att skapa nya fönster och tillgång till funktioner i nuvarande fönster
navigator ger information om användares webbläsare och miljö
frames ger tillgång till olika ramar (om de finns)
document ger tillgång till HTML-elementen i webbläsaren
history ger information om tidigare besökta webbsidor
location ger information om nuvarande webbplats och möjlighet till att skicka användaren vidare till
annan plats
screen ger information om användarens bildskärmsegenskaper (upplösning, färgdjup etc.)