NB : |
Objekter, attributter, metoder og event handlers i det følgende virker med
både Netscape og Internet Explorer fra version 4, hvis ikke andet er bemærket.
Det der er skrevet med skråskrift virker ikke med Internet Explorer,
men nok med Netscape, hvis det også står med grå skrift kan det være at det ikke virker overhovedet ! |
window-hirakiet
objekter tilknyttet HTML-elementer eller andre skærm-elementer | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Det er kun de objecter med en rød pil
under sig der er forældreobjekter*, dvs her har alle objekter i én vandret
linie de samme forældre, og eksempelvis: Hvis form med navnet minForm
indeholder en radio-knap med navnet
minAndenRadio, så kan der henvises til minAndenRadio med window.document.minForm.minAndenRadio Det er ikke altid nødvendigt at skrive window og document, hvis det er oplagt at det er dette vindue og dette dokument. I eksemplet er formen er defineret som <FORM name=minForm> og radioknappen som <INPUT type=radio name=MinAndenRadio>. Man kan eksempelvis se om den er udfyldt (har prik i midten) med java-koden if (document.minForm.MinAndenRadio.checked){... * Der er dog ikke tale om sande forældreobjekter og børn som det kendes fra ObjektOrienteretProgrammering , kun at barnet er en variabel af typen objekt , ejet af forældre. Barnet arver derfor ikke forældrens variable og metoder. |
Globale objekter
Generelt om objekter Objekter har et begreb arv, og i JavaScript er objekttypen Objekt forældre til alle objekter, og som regel uden mellemled. Alle objekttypen Object's ejendomme kan derfor bruges af alle objekter, det er:
Variablen prototype kan bruges til at tilføje egenskaber, f.eks: <script> Object.prototype.nyslags='Mallebrok er død i krigen'; </script> Test: : Eksempel hvor metode tilføjes til objekter af typen String Når jeg fremover giver eksempler på javaScript kode vil jeg ikke skrive <script> og </script> , det skal med hver gang og er derfor underforstået. |
Datatyper De "simple" datatyper er:
| ||||||||||||||
Objekter tilknyttet simple typer
Man kan bruge disse objecter til funktionskald "by reference". Men jeg fraråder dog brugen af disse objekter, da der for let kan opstå fejl. Ovenstående laver et object af typen boolean der får værdien false, så bo1.valueOf() = false, men selvom det virker så er fejlmulighederne for store. Eksempel, hvad der kan ske hvis man glemmer .valueOf(): <script> var bo1=new Boolean(false); var bo2=bo1.valueOf(); if (bo1) document.write("bo1 er true, bo1.valueOf()="+bo2) else document.write("bo1 er false, bo1.valueOf()="+bo2) </script> Her kommer så scriptet i praksis, det skriver: Altså, if (bo1) udregnede korrekt bo1 til true - det er bo1.valueOf() der er false. en if-sætning i JavaScript udregner alt der er defineret, og ikke lig ( 0, false, NaN eller en tom streng ), til true. Skulle man komme til at glemme () efter valueOf så bliver udskriften: Det er et eksempel på en udskrift af en variabel der er sat lig et objekt af typen Function, som er en objekttype jeg normalt vil fraråde at bruge. Objecttypen (Function) kan dog med fordel bruges til at tilføje visse event-handlere til knapper (button) i en formular: (klik) Object-typen Number ejer nogle konstanter : NaN (Not a Number), NEGATIVE_INFINITY, POSITIVE_INFINITY ( -undelig og +uendelig ), MIN_VALUE = , MAX_VALUE = (mindste og største mulige positive værdi). Omregning til hextal metoden toString() (som arves fra objektet Object men kan omdefineres) er i objekt Number derfineret, så man kan skrive grundtallet i parantesen -- grundtallet er basis for det talsystem nummeret skal vises i, normalt er 10 (10-tals-systemet), men det er 16 for hextal. Char er ikke en "simpel type", men ordet "Char" er et reserveret ord i javaScript, selvom det ikke bruges til noget. |
Indlejring af JavaScript i HTML<script language=javaScript>// Her en kommentar, kun på én linie /* Her en kommentar, der gerne må være på flere linier */ var s="Elementært kære Wasson"; document.write(s) </script> Her afprøves scriptet : Det definerer en streng s og skriver den på skærmen med metoden document.write(). I linien <script language=javaScript> er det strengt taget ikke nødvendigt at skrive " language=javaScript " , der er for øjeblikket ikke flere muligheder. Hver kodelinie, undtagen dokumentarlinierne, skal afsluttes med semikolon. Jeg har dog her været doven og sprunget det sidste semikolon over, det er valgfrit. |
Generelt om JavaScript
JavaScript er et programmeringssprog beregnet til udførelse i forbindelse med
HTML-filer. Det er en simplificeret udgave af C++ og Java, og ligesom disse
sprog er det objekt-orienteret og skelner mellem store og små bogstaver.Det er et fortolkende sprog (modsat compileret sprog), dvs koden tolkes påny af browseren hver gang filen læses. Variable kan valgfrit erklæres, men ikke tildeles type, og somme tider kan man komme ud for at det ikke lige får den type man forventede : Hvis f.eks a=2 så kan 3+a somme tider give 32 i stedet for 5, hvis JavaScript opfattede a som en streng i stedet for et tal . Der er ikke (eller sjældent) type-check, fejlene får lov at passere og browseren udregner udtrykkene så godt det lader sig gøre. Når det ikke kan lade sig gøre returneres somme tider en specialværdi, f.eks. Der er en meget velfungerende "garbage collection": Når en variabel ikke bruges mere og er utilgængelig, nedlægges den automatisk. Globale og lokale variable En variabel kan erklæres med var variabelnavn, eller med variabelnavn=17, eller med var variabelnavn=17. Det lille ord var har normalt ingen betydning. En variabel, erklæret udenfor en funktion, er en global variabel. Den kan bruges overalt i HTML-filen hvor der bruges javaScript. En variabel erklæret med var indeni en funktion er en lokal variabel, dvs den (gen-)kendes kun indeni funktionen, og en anden funktion kan genbruge navnet til en helt anden variabel, uden at der opstår konflikter. Uden ordet "var" bliver variablen global, når funktionen har været kaldt første gang. |
Der er to slags javaScript:
|