{"id":129,"date":"2008-10-22T14:59:13","date_gmt":"2008-10-22T12:59:13","guid":{"rendered":"http:\/\/www.kristiansborg.dk\/bibliotek\/?page_id=129"},"modified":"2008-10-22T14:59:13","modified_gmt":"2008-10-22T12:59:13","slug":"l%c3%a6r-javascript-2-videre-med-javascript","status":"publish","type":"page","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/","title":{"rendered":"L\u00e6r Javascript 2: Videre med Javascript"},"content":{"rendered":"<p>I forrige nummer gennemgik <em>Kristian Hansen<\/em> de grundl\u00e6ggende begreber i JavaScript-programmering. Denne gang ser han p\u00e5, hvordan man kan forbedre sin hjemmeside ved at kombinere de indbyggede JavaScript-funktioner med sine egne.<\/p>\n<p>Efter at have l\u00e6st forrige afsnit af JavaScript-kurset skulle man kunne skrive sine egne funktioner. De funktioner, der blev gennemg\u00e5et i det afsnit, var imidlertid ikke s\u00e6rligt avancerede. Denne gang vil det blive gennemg\u00e5et, hvordan man skriver funktioner, der kan bruges til noget. Der er imidlertid ingen grund til at opfinde den dybe tallerken igen. Derfor vil mange af de indbyggede JavaScript-funktioner blive gennemg\u00e5et &#8211; de er nemme at bruge, og s\u00e5 er man fri for at programmere det hele selv.<\/p>\n<p><strong>Afpr\u00f8vning af sine funktioner<\/strong><\/p>\n<p>Der er imidlertid ikke meget ved at skrive en funktion, hvis man ikke kan f\u00e5 lov til at se, hvordan den virker. Samarbejdet mellem HTML-dokumenter og JavaScript-funktioner vil blive gennemg\u00e5et i detaljer i n\u00e6ste afsnit &#8211; dette afsnit vil bare forklare, hvordan man s\u00e6tter programmet ind i et HTML-dokument og afpr\u00f8ver det.<\/p>\n<p>Til at lave HTML-dokumentet kr\u00e6ves en HTML-editor. Har man ikke en rigtig HTML-editor, kan man n\u00f8jes med Notesblok fra Windows 95. Derudover skal man bruge en browser til at vise dokumentet. Her anbefales Netscape Navigator 4eller Internet Explorer 4. Man m\u00e5 regne med, at visse funktioner enten ikke kan bruges eller opf\u00f8rer sig anderledes end forventet i en af browserne. Dettes skyldes, at der er forskelle mellem Netscapes JavaScript og den JScript, som Microsoft anvender. Internet Explorer 4 ligger p\u00e5 m\u00e5nedens cd, og Netscape Navigator 4 kan hentes p\u00e5 http:\/\/www.netscape.com. \u00c6ldre versioner af de to browsere kan ogs\u00e5 bruges, men s\u00e5 skal man forvente, at mange JavaScript-funktioner ikke kan bruges.<\/p>\n<p>N\u00e5r man har programmerne i orden, kan man begynde at skrive det HTML-dokument, der skal indeholde JavaScript-programmet. Det meste af HTML-dokumentet skrives som alle andre HTML-dokumenter. Blot skal man efter &lt;BODY&gt;-kommandoen bruge &lt;SCRIPT&gt;-kommandoen til at angive, at det efterf\u00f8lgende er et program skrevet i et scriptsprog. I dette tilf\u00e6lde et sproget JavaScript, og man skriver derfor &lt;SCRIPT Language = JavaScript&gt;. Herefter kan man skrive de funktioner, der udg\u00f8r programmet, og endeligt afslutte scriptsektionen med at kalde en eller flere af funktionerne. Som s\u00e5 mange andre HTML-kommandoer, skal &lt;SCRIPT&gt;-kommandoen afsluttes &#8211; det g\u00f8res med &lt;\/SCRIPT&gt;. De kommandoer, der st\u00e5r inde i &lt;SCRIPT&gt;-kommandoen, men ikke inde i en funktion, udf\u00f8res s\u00e5 snart hjemmesiden indl\u00e6ses.<\/p>\n<p>Eksempel 1 viser, hvordan man integrerer et JavaScript i et HTML-dokument.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.kristiansborg.dk\/bibliotek\/wp-content\/uploads\/2008\/10\/js-velkomst.jpeg\" alt=\"Funktionen alert kan bruges til at byde en bruger velkommen til ens hjemmeside.\" width=\"276\" height=\"119\" \/><\/p>\n<p><strong>Et godt sp\u00f8rgsm\u00e5l<\/strong><\/p>\n<p>Eksempel 1 viser ogs\u00e5, hvordan man stiller brugeren et sp\u00f8rgsm\u00e5l. Det g\u00f8res ved hj\u00e6lp af prompt-funktionen. Denne funktion tager et eller to parametre. Det f\u00f8rste er det sp\u00f8rgsm\u00e5l, der skal stilles. I dette tilf\u00e6lde &#8220;Hvad er dit navn?&#8221;. Derefter kan man angive endnu en tekststreng &#8211; denne angiver, den tekst, der skal vises i inputfeltet, inden brugeren indtaster noget. I dette tilf\u00e6lde angives her &#8220;Anonym&#8221;.<\/p>\n<p>prompt-funktionen returnerer en tekststreng, der indeholder det, som brugeren indtastede. Hvis brugeren v\u00e6lger annuller, returneres en tom streng (&#8220;&#8221;).<\/p>\n<p><strong>Et liges\u00e5 godt svar <\/strong><\/p>\n<p>Eksemplet forts\u00e6tter med at byde brugeren velkommen til ens hjemmeside. Det g\u00f8res ved hj\u00e6lp af funktionen alert. Udtrykket alert lyder lidt afskr\u00e6kkende, men funktionen kan bruges til andet end at give advarsler &#8211; den kan ogs\u00e5 bruges til helt almindelige beskeder.<\/p>\n<p>Som det ses af sk\u00e6rmbillederne, f\u00e5r alle vinduer fra JavaScript overskriften Microsoft Internet Exploerr (i Netscape Navigator f\u00e5r de overskriften JavaScript dialog). At man ikke &#8211; ligesom i VBScript &#8211; kan \u00e6ndre overskriften p\u00e5 vinduerne, skyldes JavaScript og VBScripts forskellige sikkerhedsopfattelser. JavaScript ser det som en trussel, at man kan \u00e6ndre overskriften og derved &#8211; for eksempel &#8211; lede folk til at tro, at de indtaster deres kontonummer i deres homebanking-system, mens de i virkeligheden g\u00f8r det p\u00e5 en suspekt fyrs hjemmeside.<\/p>\n<p><strong>Et nemt sp\u00f8rgsm\u00e5l<\/strong><\/p>\n<p>Nogle sp\u00f8rgsm\u00e5l kr\u00e6ver ikke, at brugeren indtaster et svar, men bare at vedkommende tager stilling til sp\u00f8rgsm\u00e5ler. Det kan for eksempel v\u00e6re, om brugeren vil forts\u00e6tte en bestemt funktion. Et s\u00e5dan sp\u00f8rgsm\u00e5l kan typisk besvares med OK eller Annuller. Funktionen confirm viser en dialogboks med netop disse knapper, og som det ses af eksempel 2 returnerer funktionen enten sandt eller falsk &#8211; true eller false &#8211; alt efter, om brugeren v\u00e6lger OK eller Annuller. Hvis brugeren trykker p\u00e5 escape, opfattes det, som om vedkommende valgte annuller.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.kristiansborg.dk\/bibliotek\/wp-content\/uploads\/2008\/10\/js-kopi.jpeg\" alt=\"Funktioner confirm kan bruges til at stile brugeren et sp\u00f8rgsm\u00e5l med to svarmuligheder.\" width=\"278\" height=\"119\" \/><\/p>\n<p><strong>Dynamiske hjemmesider<\/strong><\/p>\n<p>En af de interessante muligheder, JavaScript stiller til r\u00e5dighed, er dynamiske hjemmesider. Dette skal ikke forveksles med dynamisk HTML, der er en helt anden historie, som er blevet gennemg\u00e5et tidligere i kurset.<\/p>\n<p>Dynamiske hjemmesider vil sige, at hjemmesiden tilpasser sig brugerens valg. Faktisk er det muligt at lave en hjemmeside, som er fuldst\u00e6ndigt genereret af et JavaScript-program. Eksempel 3 viser en funktion, der skriver en f\u00f8dselsdagshilsen ud i et nyt vindue. Som det ses, kan man i writeln-funktionen angive HTML-kode, som n\u00e5r man skriver HTML-sider. Man kan imidlertid ogs\u00e5 klare det p\u00e5 en anden m\u00e5de &#8211; det ses af eksempel 4. Det er ved at behandle udskriften som tekststrenge, og herefter kalde bestemte metoder p\u00e5 disse. I dette eksempel er det italics og bold. De svarer henholdsvis til HTML-kommandoerne &lt;I&gt; og &lt;B&gt;. Andre lignede metoder er small, strike, sub, og sup.<\/p>\n<p>Eksemplet her sender udskriften til et nyt vindue, men man kan ogs\u00e5 udskrive til det vindue, JavaScript-programmet befinder sig i. S\u00e5 skal man blot skrive document.write eller document.writeln i stedet.<\/p>\n<p><strong>Datoer<\/strong><\/p>\n<p>Som det blev beskrevet i den f\u00f8rste artikel om JavaScript, er det ikke helt s\u00e5 nemt at arbejde med datoer i JavaScript som det er i VBScript. Det er Date-objektet, der i JavaScript bruges til at repr\u00e6sentere en dato. Man opretter et nyt Date-objekt ved at skrive new Date(). Objektet vil s\u00e5 repr\u00e6sentere det aktuelle tidspunkt. Hvis man blot vil udskrive det aktuelle tidspunkt er det nemt &#8211; s\u00e5 kan man bare udskrive Date-objektet. Dette er vist i eksempel 5. Hvis man vil oprette et Date-objekt, der repr\u00e6senterer et andet tidspunkt end det nuv\u00e6rende, skal man angive dette som parameter. Dette kan g\u00f8res p\u00e5 flere forskellige m\u00e5der. For eksempel som en tekststreng, ligesom den Date-objektet selv udskriver &#8211; new Date (&#8220;December 24, 1998, 00:00:00&#8221;). Man kan ogs\u00e5 n\u00f8jes med at angive datoen og intet klokkesl\u00e6t. Det g\u00f8res i formatet \u00e5r, m\u00e5ned, dato. Bem\u00e6rk, at m\u00e5nederne nummereres fra 0. Det vil sige, at new Date(98, 11, 24) angiver juleaften 1998. Endelig kan man v\u00e6lge at angive b\u00e5de dato og klokkesl\u00e6t, men som en r\u00e6kke parametre i\u00a0 stedet for \u00e9n\u00a0 streng: new Date (98, 11, 24, 0, 0, 0). De sidste tre tal angiver tidspunktet som timer, minutter og sekunder.<\/p>\n<p>Det kunne nu ogs\u00e5 v\u00e6re rart at kunne arbejde med datoer. Is\u00e6r i disse tider, hvor man n\u00e6rmer sig \u00e5r 2000, kunne det v\u00e6re rart at vide, hvor lang tid man kan regne med, at sin computer virker. Det kan man g\u00f8re &#8211; som i eksempel 6 &#8211; ved at oprette to Date-objekter. Et med dags dato og et med nyt\u00e5rsdag \u00e5r 2000. Herefter kan man simpelthen tr\u00e6kke de to objekter fra hinanden, og man vil f\u00e5 forskellen p\u00e5 de to tidspunkter &#8211; i millisekunder! Herefter kan man selvf\u00f8lgeligt selv omregne til sekunder, minutter, timer, dage, m\u00e5neder og \u00e5r, men man kan ogs\u00e5 bruge nogle af Date-objektets andre funktioner. Funktionerne getDate, getDay, getHours, getMinutes, getMonth, getSeconds og getYear returnerer alle en del af et tidspunkt. getDate og getDay kr\u00e6ver m\u00e5ske lidt mere forklaring. getDate returnerer datoen, mens getDay returnerer nummeret p\u00e5 ugedagen. S\u00f8ndag er &#8211; if\u00f8lge JavaScript &#8211; den f\u00f8rste dag i ugen, og har derfor nummer 0. Ugen afsluttes med l\u00f8rdag, der har nummer 6. Som det ses af eksemplet skal man tr\u00e6kke 71 fra \u00e5rstallet. Dette skyldes, at JavaScript opfatter 1971 som \u00e5r 0.<\/p>\n<p><strong>Tekster<\/strong><\/p>\n<p>Ligesom VBScript har JavaScript en r\u00e6kke funktioner, der g\u00f8r teksth\u00e5ndtering lettere. Disse er alle tilknyttet objektet String &#8211; det betyder, at de kan udf\u00f8res p\u00e5 enhver tekststreng. Der er mange af disse funktioner, og det er ikke muligt at beskrive dem alle her. Til geng\u00e6ld findes de alle sammen i Computer PCs JavaScript-h\u00e5ndbog som kan bestilles ved at bruge kuponen andetsteds i bladet.<\/p>\n<p>charAt-funktionen returnerer et tegn i tekststrengen. Den eneste parameter til denne funktion er positionen p\u00e5 det tegn, der skal returneres.<\/p>\n<p>En anden interessant funktion er indexOf, der returnerer positionen af en anden streng i teksten. Denne funktion bruges til s\u00f8gning. Hvis man vil se, hvor teksten &#8220;and&#8221; findes i strengen s, skal man skrive s.indexOf(&#8220;and&#8221;). Hvis teksten ikke findes, returneres -1.<\/p>\n<p>Metoden substring returnerer en delstreng af hele strengen. Hvis man for eksempel vil have alle tegn fra nummer 3 til nummer 7, skriver man s.substring(3,7).<\/p>\n<p>String-klassen har imidlertid andet end metoder. Den har ogs\u00e5 properties. Disse tilg\u00e5s ligesom metoder, blot har de aldrig parametre, og det er derfor un\u00f8dvendigt at angive parenteserne. Den mest interessante property er length, der angiver l\u00e6ngden af tekststrengen.<\/p>\n<p>Eksempel 7 viser forskellige m\u00e5der at behandle en streng p\u00e5.<\/p>\n<p><strong>N\u00e6ste nummer <\/strong><\/p>\n<p>I n\u00e6ste nummer afsluttes ikke bare JavaScript-kurset, men hele Computer PC&#8217;s store Internet-kursus. Den sidste artikel kommer til at handle om, hvordan man integrerer JavaScript-kode med HTML-kode. Det vil blandt andet blive gennemg\u00e5et, hvordan man skriver JavaScript-programmer, der h\u00e5ndterer formularer og meget mere.<\/p>\n<p><strong>Pr\u00f8v dig frem <\/strong><\/p>\n<p>JavaScript er et kompliceret og omfattende sprog, og man bliver ikke professionel p\u00e5 en aften &#8211; end ikke med Computer PCs artikler. Form\u00e5let med artiklerne er at give et grundl\u00e6ggende kendskab til sproget &#8211; herefter er det op til dig selv at l\u00e6re resten. Dette l\u00e6rer man bedst ved at pr\u00f8ve sig frem. Man kan for eksempel se p\u00e5 hjemmesider, der bruger JavaScript og pr\u00f8ve at l\u00e6re af deres programmer. Man kan ogs\u00e5 selv g\u00e5 p\u00e5 opdagelse i sproget. Til begge dele er Computer PCs JavaScript-h\u00e5ndbog en uvurderlig hj\u00e6lp. Den beskriver nemlig alle funktioner i JavaScript.<\/p>\n<p>Udover opslagsbogen om JavaScript har Computer PC udgivet opslagsb\u00f8ger om HTML 4 og VBScript. Alle tre h\u00e6fter kan bestilles hos Computer PC for kun kr. 59,- (plus porto og eksp. kr. 19,- ) ved at benytte kuponen andetsteds i bladet.<\/p>\n<p><strong>Eksempel 1: Velkomst til en hjemmeside<\/strong><\/p>\n<p>&lt;HTML&gt;<\/p>\n<p>&lt;HEAD&gt;&lt;TITLE&gt;Eksempel 1&lt;\/TITLE&gt;&lt;\/HEAD&gt;<\/p>\n<p>&lt;BODY&gt;<\/p>\n<p>&lt;SCRIPT Language = JavaScript&gt;<\/p>\n<p>\u00a0<\/p>\n<p>function velkomst()<\/p>\n<p>{<\/p>\n<p>\u00a0 navn = prompt(&#8220;Hvad er dit navn?&#8221;, &#8220;Anonym&#8221;);<\/p>\n<p>\u00a0 alert(&#8220;Hej &#8221; + navn + &#8220;. Velkommen til min hjemmeside&#8221;);<\/p>\n<p>}<\/p>\n<p>\u00a0<\/p>\n<p>velkomst();<\/p>\n<p>\u00a0<\/p>\n<p>&lt;\/SCRIPT&gt;<\/p>\n<p>\u00a0<\/p>\n<p>&lt;\/BODY&gt;<\/p>\n<p>&lt;\/HTML&gt;<\/p>\n<p><strong>Eksempel 2: Et simpelt sp\u00f8rgsm\u00e5l <\/strong><\/p>\n<p>&lt;HTML&gt;<\/p>\n<p>&lt;HEAD&gt;&lt;TITLE&gt;Eksempel s&lt;\/TITLE&gt;&lt;\/HEAD&gt;<\/p>\n<p>&lt;BODY&gt;<\/p>\n<p>&lt;SCRIPT Language = JavaScript&gt;\u00a0\u00a0<\/p>\n<p>function download()<\/p>\n<p>{<\/p>\n<p>\u00a0 if (confirm(&#8220;Vil du kopiere hele Internet til din harddisk?&#8221;))<\/p>\n<p>\u00a0\u00a0\u00a0 alert(&#8220;S\u00e5 v\u00e6bn dig med t\u00e5lmodighed&#8221;);<\/p>\n<p>\u00a0 else<\/p>\n<p>\u00a0\u00a0\u00a0 alert(&#8220;Du er da heller ikke med p\u00e5 noget&#8221;);<\/p>\n<p>}<\/p>\n<p>\u00a0<\/p>\n<p>download();<\/p>\n<p>&lt;\/SCRIPT&gt;<\/p>\n<p>&lt;\/BODY&gt;<\/p>\n<p>&lt;\/HTML&gt;<\/p>\n<p><strong>Eksempel 3: F\u00f8dselsdagshilsen i nyt vindue <\/strong><\/p>\n<p>&lt;HTML&gt;<\/p>\n<p>&lt;HEAD&gt;&lt;TITLE&gt;Eksempel 3&lt;\/TITLE&gt;&lt;\/HEAD&gt;<\/p>\n<p>&lt;BODY&gt;<\/p>\n<p>&lt;SCRIPT Language = JavaScript&gt;<\/p>\n<p>\u00a0<\/p>\n<p>function nySide(navn, alder)<\/p>\n<p>{<\/p>\n<p>\u00a0 nytVindue = window.open(&#8220;&#8221;);<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0 nytVindue.document.writeln(&#8220;&lt;B&gt;Hej &#8221; + navn + &#8220;.&lt;\/B&gt;&#8221;);<\/p>\n<p>\u00a0 nytVindue.document.writeln(&#8220;&lt;P&gt;&#8221;);<\/p>\n<p>\u00a0 nytVindue.document.writeln(&#8220;Tillykke med din &lt;I&gt;&#8221; + alder + &#8220;-\u00e5rs&lt;\/I&gt; f\u00f8dselsdag.&#8221;);<\/p>\n<p>}<\/p>\n<p>\u00a0<\/p>\n<p>nySide(&#8220;Jens&#8221;, 21);<\/p>\n<p>&lt;\/SCRIPT&gt;<\/p>\n<p>\u00a0<\/p>\n<p>&lt;\/BODY&gt;<\/p>\n<p>&lt;\/HTML&gt;<\/p>\n<p><strong>Eksempel 4: F\u00f8dselsdagshilsen p\u00e5 en anden m\u00e5de <\/strong><\/p>\n<p>&lt;HTML&gt;<\/p>\n<p>&lt;HEAD&gt;&lt;TITLE&gt;Eksempel 4&lt;\/TITLE&gt;&lt;\/HEAD&gt;<\/p>\n<p>&lt;BODY&gt;<\/p>\n<p>&lt;SCRIPT Language = JavaScript&gt;<\/p>\n<p>\u00a0<\/p>\n<p>function nySide(navn, alder)<\/p>\n<p>{<\/p>\n<p>\u00a0 nytVindue = window.open(&#8220;&#8221;);<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0 s = &#8220;Hej &#8221; + navn;<\/p>\n<p>\u00a0 nytVindue.document.writeln(s.bold());<\/p>\n<p>\u00a0 nytVindue.document.writeln(&#8220;Tillykke med din &#8220;);<\/p>\n<p>\u00a0 s = alder + &#8220;-\u00e5rs&#8221;;<\/p>\n<p>\u00a0 nytVindue.document.writeln(s.italics());<\/p>\n<p>\u00a0 nytVindue.document.writeln(&#8220;f\u00f8dselsdag.&#8221;);<\/p>\n<p>}<\/p>\n<p>\u00a0<\/p>\n<p>nySide(&#8220;Jens&#8221;, 21);<\/p>\n<p>&lt;\/SCRIPT&gt;<\/p>\n<p>\u00a0<\/p>\n<p>&lt;\/BODY&gt;<\/p>\n<p>&lt;\/HTML&gt;<\/p>\n<p><strong>Eksempel 5: Hvad er klokken? <\/strong><\/p>\n<p>&lt;HTML&gt;<\/p>\n<p>&lt;HEAD&gt;&lt;TITLE&gt;Eksempel 5&lt;\/TITLE&gt;&lt;HEAD&gt;<\/p>\n<p>&lt;BODY&gt;<\/p>\n<p>&lt;SCRIPT Language = JavaScript&gt;<\/p>\n<p>\u00a0<\/p>\n<p>function visDato()<\/p>\n<p>{<\/p>\n<p>\u00a0 dato = new Date();<\/p>\n<p>\u00a0 alert (&#8220;Aktuelt tidspunkt: &#8221; + dato);<\/p>\n<p>}<\/p>\n<p>\u00a0<\/p>\n<p>visDato();<\/p>\n<p>&lt;\/SCRIPT&gt;<\/p>\n<p>&lt;\/BODY&gt;<\/p>\n<p>&lt;\/HTML&gt;<\/p>\n<p><strong>Eksempel 6 &#8211; Beregning af antal dag til \u00e5r 2000 <\/strong><\/p>\n<p>&lt;HTML&gt;<\/p>\n<p>&lt;HEAD&gt;&lt;TITLE&gt;Eksempel 6&lt;\/TITLE&gt;&lt;\/HEAD&gt;<\/p>\n<p>&lt;BODY&gt;<\/p>\n<p>&lt;SCRIPT Language = JavaScript&gt;<\/p>\n<p>\u00a0<\/p>\n<p>function til2000()<\/p>\n<p>{<\/p>\n<p>\u00a0 nu = new Date();<\/p>\n<p>\u00a0 toTusinde = new Date (2000,0,1);<\/p>\n<p>\u00a0 forskel = new Date(toTusinde &#8211; nu);<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0 alert (&#8220;Der er&#8221; + forskel.getDate() + &#8220;dage, &#8221; + forskel.getMonth() + &#8221; m\u00e5neder og &#8221; + (forskel.getYear() &#8211; 70) + &#8221; \u00e5r til \u00e5r 2000&#8243;);<\/p>\n<p>}<\/p>\n<p>\u00a0<\/p>\n<p>til2000();<\/p>\n<p>\u00a0<\/p>\n<p>&lt;\/SCRIPT&gt;<\/p>\n<p>&lt;\/BODY&gt;<\/p>\n<p>&lt;\/HTML&gt;<\/p>\n<p><strong>Eksempel 7 &#8211; Leg med tekststrenge <\/strong><\/p>\n<p>&lt;HTML&gt;<\/p>\n<p>&lt;HEAD&gt;&lt;TITLE&gt;Eksempel 7&lt;\/TITLE&gt;&lt;\/HEAD&gt;<\/p>\n<p>&lt;BODY&gt;<\/p>\n<p>&lt;SCRIPT Language = JavaScript&gt;<\/p>\n<p>\u00a0<\/p>\n<p>function text()<\/p>\n<p>{<\/p>\n<p>\u00a0 txt = prompt(&#8220;Indtast en tekst&#8221;);<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0 st = &#8220;&#8221;;<\/p>\n<p>\u00a0 for(i = 0; i &lt; txt.length; i = i + 2)<\/p>\n<p>\u00a0\u00a0\u00a0 st = st + txt.charAt(i);<\/p>\n<p>\u00a0\u00a0\u00a0<\/p>\n<p>\u00a0 alert(st);<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0 alert(&#8220;Position af &#8216;and&#8217; i teksten : &#8221; + txt.indexOf(&#8220;and&#8221;));<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0 alert(&#8220;Bogstaver fra position 3 til 7 : &#8221; + txt.substring(3,7));<\/p>\n<p>}<\/p>\n<p>\u00a0<\/p>\n<p>text();<\/p>\n<p>\u00a0<\/p>\n<p>&lt;\/SCRIPT&gt;<\/p>\n<p>\u00a0<\/p>\n<p>&lt;\/BODY&gt;<\/p>\n<p>&lt;\/HTML&gt;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I forrige nummer gennemgik Kristian Hansen de grundl\u00e6ggende begreber i JavaScript-programmering. Denne gang ser han p\u00e5, hvordan man kan forbedre sin hjemmeside ved at kombinere de indbyggede JavaScript-funktioner med sine egne. Efter at have l\u00e6st forrige afsnit af JavaScript-kurset skulle man kunne skrive sine egne funktioner. De funktioner, der blev gennemg\u00e5et i det afsnit, var [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":30,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-129","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Biblioteket | Samling af artikler og b\u00f8ger\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"L\u00e6r Javascript 2: Videre med Javascript | Biblioteket\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2008-10-22T12:59:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2008-10-22T12:59:13+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"L\u00e6r Javascript 2: Videre med Javascript | Biblioteket\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/l%c3%a6r-javascript-2-videre-med-javascript\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/#listItem\",\"name\":\"Artikler\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/#listItem\",\"position\":2,\"name\":\"Artikler\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/#listItem\",\"name\":\"IT\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/#listItem\",\"position\":3,\"name\":\"IT\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/l%c3%a6r-javascript-2-videre-med-javascript\\\/#listItem\",\"name\":\"L\\u00e6r Javascript 2: Videre med Javascript\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/#listItem\",\"name\":\"Artikler\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/l%c3%a6r-javascript-2-videre-med-javascript\\\/#listItem\",\"position\":4,\"name\":\"L\\u00e6r Javascript 2: Videre med Javascript\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/#listItem\",\"name\":\"IT\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#organization\",\"name\":\"Biblioteket\",\"description\":\"Samling af artikler og b\\u00f8ger\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/l%c3%a6r-javascript-2-videre-med-javascript\\\/#webpage\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/l%c3%a6r-javascript-2-videre-med-javascript\\\/\",\"name\":\"L\\u00e6r Javascript 2: Videre med Javascript | Biblioteket\",\"inLanguage\":\"da-DK\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/artikler\\\/it\\\/l%c3%a6r-javascript-2-videre-med-javascript\\\/#breadcrumblist\"},\"datePublished\":\"2008-10-22T14:59:13+02:00\",\"dateModified\":\"2008-10-22T14:59:13+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#website\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/\",\"name\":\"Biblioteket\",\"description\":\"Samling af artikler og b\\u00f8ger\",\"inLanguage\":\"da-DK\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"L\u00e6r Javascript 2: Videre med Javascript | Biblioteket","description":"","canonical_url":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek#listItem","position":1,"name":"Home","item":"https:\/\/www.kristiansborg.dk\/bibliotek","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/#listItem","name":"Artikler"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/#listItem","position":2,"name":"Artikler","item":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/#listItem","name":"IT"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/#listItem","position":3,"name":"IT","item":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/#listItem","name":"L\u00e6r Javascript 2: Videre med Javascript"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/#listItem","name":"Artikler"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/#listItem","position":4,"name":"L\u00e6r Javascript 2: Videre med Javascript","previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/#listItem","name":"IT"}}]},{"@type":"Organization","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#organization","name":"Biblioteket","description":"Samling af artikler og b\u00f8ger","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/"},{"@type":"WebPage","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/#webpage","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/","name":"L\u00e6r Javascript 2: Videre med Javascript | Biblioteket","inLanguage":"da-DK","isPartOf":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#website"},"breadcrumb":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/#breadcrumblist"},"datePublished":"2008-10-22T14:59:13+02:00","dateModified":"2008-10-22T14:59:13+02:00"},{"@type":"WebSite","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#website","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/","name":"Biblioteket","description":"Samling af artikler og b\u00f8ger","inLanguage":"da-DK","publisher":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#organization"}}]},"og:locale":"da_DK","og:site_name":"Biblioteket | Samling af artikler og b\u00f8ger","og:type":"article","og:title":"L\u00e6r Javascript 2: Videre med Javascript | Biblioteket","og:url":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/","article:published_time":"2008-10-22T12:59:13+00:00","article:modified_time":"2008-10-22T12:59:13+00:00","twitter:card":"summary","twitter:title":"L\u00e6r Javascript 2: Videre med Javascript | Biblioteket"},"aioseo_meta_data":{"post_id":"129","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 06:59:27","updated":"2025-06-04 00:54:23","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/\" title=\"Artikler\">Artikler<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/\" title=\"IT\">IT<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tL\u00e6r Javascript 2: Videre med Javascript\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.kristiansborg.dk\/bibliotek"},{"label":"Artikler","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/"},{"label":"IT","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/"},{"label":"L\u00e6r Javascript 2: Videre med Javascript","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/artikler\/it\/l%c3%a6r-javascript-2-videre-med-javascript\/"}],"_links":{"self":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/comments?post=129"}],"version-history":[{"count":0,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/129\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/30"}],"wp:attachment":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/media?parent=129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}