Här är koden:
Jag vill tala om att JavaScript inte har någon riktig datum-typ. Men som du ser går det fint att arbeta med datum. Det
fungerar därför att datum är representerade av antal millisekunder sedan 1970-01-01 00:00. Det låter komplicerat, men
det är ett vanligt sätt att representera datum i datorer. Du behöver inte bry dig om detta. Du behöver bara bry dig om
funktionerna och de är inte ett dugg svåra att förstå. Jag ville bara tala om detta så att du inte tycker att jag säger
något som är fel.
Ett vanligt problem är hur man kan använda slumptal i programmerings- och script-språk. För tillfället finns det ingen
slumptals-funktion i JavaScript, men jag tror att det kommer att implementeras en snart. Tills vidare får man använda
ett trick. Okej, det är väl kanske inget trick egentligen. De flesta kompilatorer jag kan komma på använder det för att
räkna fram slumptal. Ja, den räknar fram dem. Man tar datorns tid och datum och manipulerar det på
något sätt. Jag tror att den slutliga versionen av JavaScript kommer att använda den här metoden (eller en liknande).
Tiden är, som jag nämnde ovan, egentligen bara ett stort tal. Man kan använda det talet och göra lite beräkningar
med det. Man kan t ex beräkna sinus av det och använda absolutvärdet av det. Det ger ett tal mellan 0 och 1.
Eftersom tiden ändras varje millisekund är det ingen risk att man får samma tal två gånger i rad (om man gör
beräkningen många gånger direkt efter varandra). Om man vill generera många slumptal under en kortare tid bör man
inte använda enbart sin(). Då får man ju värden från en sinuskurva! Det är inte slumpmässigt. Om man däremot vill
generera ett nytt slumptal t ex var 20:e sekund är det här ett utmärkt sätt att göra det.
Det här är ett slumptal:
Här är koden:
Exemplet passar naturligtvis inte för alla syften, men det ger dig en uppfattning om hur det fungerar. Nu ska jag
visa en funktion som jag fick från Maynard Demmon. Du behöver bara skriva värdet för variabeln limits för att
ange det högsta värde du vill ha, t ex 100. Då får du ett 'bra' slumptal mellan 0 och 99. Här är koden:
Att skapa fönster är en jättebra finess i JavaScript. Man kan bygga nya fönster. Läsa in ett HTML-dokument.
Navigera på Internet. Allt i JavaScript. Jag ska visa hur vi kan öppna ett nytt fönster och skriva något i det.
Om du klickar på knappen får du se vad jag ska visa härnäst.
För att bryta med traditionerna skrev jag inte Hello world! i fönstret...
toolbar
I stället för pixels måste du ange ett antal pixels. På det sättet talar man om för läsaren hur stort
fönstret ska vara.
Tänk på följande: När du skriver något till ett fönster bör du alltid sätta <br> efter den
sista texten du skriver till fönstret. Annars kommer du troligen inte att se sista textraden. Det blir så därför
att internet-läsaren bara skriver ut hela rader och om det inte finns ett radslut väntar dem på att det ska komma mera.
<img src="mycool.gif" height=100 width=100>
Egenskapen onMouseOver
Du kan se nästa finess i JavaScript genom att föra muspekaren över den här
länken. Titta på statusraden längst ner på sidan. Du kan kombinera det här med andra
JavaScript-funktioner. Om du rör muspekaren över denna länk
kommer ett fönster att öppnas. Nu ska jag visa koden för dessa två effekter:
<a href="stupid.htm" onMouseOver="window.status='Just another stupid link...';
return true">
Det enda du behöver göra är att lägga till egenskapen onMouseOver i <a>-koden. 'Window.status' låter dig skriva
saker på statusraden på din internet-läsare. Som du kan se måste man alternera mellan ' och ". Man kan inte använda " hela
tiden för då vet inte JavaScript var strängen man vill skriva i statusfältet börjar och slutar. Efter strängen måste man skriva
;return true.
Det andra exemplet använder JavaScript till att anropa funktionen alert. Här är koden:
<html>
<head>
<script language="JavaScript">
<!-- Hiding
function hello() {
alert("Hello!");
}
// -->
</script>
</head>
<body>
<a href="" onMouseOver="hello()">link</a>
</body>
</html>
Det här är ganska enkelt. Det använder metoden onMouseOver och funktionen hello() anropas när
händelsen inträffar.
Fler datum-funktioner
Nu vill jag visa ett annat exempel där vi använder tid- och datum-metoder. Du har redan sett hur egenskapen
lastModified fungerar. Nu ska vi skriva tid och datum på vårt dokument. Den här metoden använder
din dators tid och datum, så om den är inställd på 1983-05-17 kommer det att bli fel på sidan också. Det är alltså inte
ett internet-datum (eller liknande).
<script language="JavaScript">
<!-- Hiding
today = new Date()
document.write("The time now is: ",today.getHours(),":",today.getMinutes())
document.write("
The date is: ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear());
// end hiding contents -->
</script>
Först skapar vi en datum-variabel. Detta gör vi med today=new Date().
Om vi inte specificerar ett datum använder läsaren det lokala datumet och tilldelar variabeln today det
värdet. Lägg märke till att vi inte behöver deklarera variabeln
today någonstans. Det är en skillnad mot Java och de flesta andra programmerings-språk där man måste
tala om vilka variabler man vill använda innan man använder dem. Vi har skapat ett tids-objekt som innehåller lokal tid och
datum. Nu kan vi enkelt skriva innehållet i ett dokument. Man måste skriva today
före varje get...-metod, annars kommer inte internet-läsaren att veta vilket objekt man syftar på. Metoden getMonth() returnerar
ett nummer mellan 0 och 11 (0 står för januari och 11 för december). Därför måste vi addera 1 till det returnerade talet för
att få rätt månad.
Det kan vara intressant att skapa ett datum, t ex det datum du skapade ett dokument. Sen kan du räkna ut hur många
dagar senare som någon läser det. Om det är mer än 10 dagar kan du säga: Hörru, det här är gammalt, läs det inte!
Till detta behöver du dagens datum, som i exemplet ovan, och det datum du skapade dokumentet. Du kan specificera
ett datum när du skapar objektet. Det ser ut så här:
docStarted= new Date(96,0,13)
Du måste specificera året först, sen månaden (kom ihåg att minska månaden med ett!), och sist dagen. man kan också
specificera tiden:
docStarted= new Date(96,0,13,10,50,0)
De första siffrorna är fortfarande datumet. Därefter följer timmar, minuter och sekunder.
Slumptal
<html>
<head>
<script language="JavaScript">
function RandomNumber() {
today = new Date();
num= Math.abs(Math.sin(today.getTime()));
return num;
}
</script>
</head>
<body>
<script language="JavaScript">
<!--
document.write("This is a random number:", RandomNumber());
// -->
</script>
</body>
</html>
function random() {
today = new Date();
num = today.getTime();
num = Math.round(Math.abs(Math.sin (num)*1000000)) % limits;
return num;
}
Att skapa fönster
Här är koden:
<html>
<head>
<script language="JavaScript">
function WinOpen() {
msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");
msg.document.write("<HEAD><TITLE>Yo!</TITLE></HEAD>");
msg.document.write("<CENTER><h1><B>This is really cool!</B></h1></CENTER>
Som alltid finns det en knapp som anropar en funktion. Funktionen WinOpen() skapar ett nytt fönster genom att
anropa metoden open. De första citationstecknen innehåller URL:en till sidan. Här kan du skriva adressen till ett
HTML-dokument som du vill läsa. Om du lämnar blankt läses ingen sida utan du kan skriva till fönstret direkt i
JavaScript! Här kan du skriva nästan vad som helst. Det spelar ingen roll i vårt exempel. Du får ett felmeddelande
om du skriver Display Window (med ett mellanrum mellan orden. Netscape påstår någonting annat,
men jag satt en halvtimme därför att jag inte lyckades få något felmeddelande!). De två följande citationstecknen
innehåller fönstrets egenskaper. Det här är mycket intressant. Du kan tala om ifall du vill ha ett verktygsfält,
rullningslister... Om du skriver toolbar=yes kommer du att få ett verktygsfält i fönstret. Här nedan
finns en lista över de egenskaper man kan ändra. Du kan ändra alla egenskaper. Du måste skriva dem som ovan. Utan
mellanslag! Detta är vad du kan ändra i ditt fönster:
");
}
</script>
</head>
<body>
<form>
<input type="button" name="Button1" value="Push me" onclick="WinOpen()">
</form>
</body>
</html>
location
directories
status
menubar
scrollbars
resizable
copyhistory
width=pixels
height=pixels
När du har öppnat fönstret, och döpt det till msg (står före metoden open),
kan du skriva i det. Här kan du skriva vanlig HTML-kod! Detta är verkligen bra. Man kan bygga ett
HTML-dokument och använda den information besökaren gav dig i ett formulär. Du kan skapa en sida där
en besökare får fylla i sitt namn i ett formulär och sedan skapa ett nytt HTML-dokument där du använder
hans namn! För några månader sedan var detta bara möjligt med hjälp av CGI-script!
En annan viktig sak är detta:
Om du vill visa bilder i ett nytt fönster så se till att sätta height och width
i <img>-koden.Annars kommer du inte att se några bilder eller också kraschar sidorna. Det
kan skapa en del väldigt konstiga problem som man inte väntar sig att bilden ska vara 'skyldig' till. Skriv
alltså någonting i stil med:
Senast ändrad 11 maj 1996
© 1996 Stefan Koch
Översatt till svenska av Niklas Johansson 1996