Avatar billede stroke1 Nybegynder
12. juni 2003 - 12:46 Der er 11 kommentarer og
1 løsning

hvad gør den

Jeg er helt ny i javascript.
Jeg har fundet følgende kode :

<HTML>
<HEAD>
<SCRIPT LANGUAGE=JavaScript>

function window_onload()
{

  var numberForms = document.forms.length;
  var formIndex;
  for (formIndex = 0; formIndex < numberForms; formIndex++)
  {
      alert(document.forms[formIndex].name);
  }
}

</SCRIPT>
</HEAD>
<BODY LANGUAGE=JavaScript onload="window_onload()">

<FORM NAME="form1">
<P>This is inside form1</P>
</FORM>

<FORM NAME="form2">
<P>This is inside form2</P>
</FORM>

<FORM NAME="form3">
<P>This is inside form3</P>
</FORM>

</BODY>
</HTML>

Det er noget med nogle forme den laver, men hvad sker der når den når til den for løkke ????

Og lige tilsidst, HTML og javascript ser ud til at være blandet sammen i koden. Det kan man altså godt????
Avatar billede ducks Nybegynder
12. juni 2003 - 12:52 #1
Ja, man kan godt sætte JavaScript sammen med HTML.
Man sætter blot...

<script language="JavaScript">
// JavaScript
</script>

...ind i html koden, der hvor der skal være JavaScript.
Avatar billede edutasia Nybegynder
12. juni 2003 - 13:06 #2
Scriptet gør følgende:

1. Finder antal formularer i hele dokumentet
2. Løber alle formularerne igennem i en løkke, der ikke gør andet end at vise navnet på hver enkelt formular i en dialogboks
Avatar billede stroke1 Nybegynder
12. juni 2003 - 22:28 #3
Jamen hvorfor lave en løkke til det, er ikke helt med
Avatar billede edutasia Nybegynder
12. juni 2003 - 22:45 #4
Helt ærligt? Det har jeg ingen idé om :)

Det ligner mest af alt et eksempel fra en eller anden lærebog, der bare skal vise, dels hvordan man kan bruge en såkaldt collection (dvs. en "samling" af et eller andet - i dette tilfælde alle dokumentets formularer), dels hvordan man løber en collection igennem i en løkke. Det er noget, man ofte har brug for i scripting og programmering, så metoden er meget god at kende - selv om den ikke giver så meget mening her.
Avatar billede stroke1 Nybegynder
12. juni 2003 - 23:18 #5
hvorfor skriver den form 1 form 2 og form 3 før den gennemgår løkken ?? Når man læser koden ser det ud som om den gennemkører løkken først.

Hvor ser man i koden at den skal skrive form 1, form 2 og form 3 i disse alerts ????
Avatar billede skovenborg Nybegynder
12. juni 2003 - 23:42 #6
Det kan være meget nyttigt at bruge en løkke, hvis man fx senere putter flere inputs på. Det vil sige at du meget let kan proppe scriptet ind i en form med fx 100 inputs og det stadig virker uden at du skal ændre i det.
Avatar billede edutasia Nybegynder
12. juni 2003 - 23:54 #7
Jeg prøver lige linie for linie - det er lidt svært at forklare:

  var numberForms = document.forms.length;

Først hentes længden på den collection, der hedder "forms", og indlæses i variablen "numberForms".

"forms" er 'indbygget' i browseren. Det er en slags tabel, der indeholder alle formularer i dokumentet. Når du i selve html-koden f.eks. skriver <form name="form1"> havner formularen "form1" altså automatisk i "forms".

De enkelte poster i "forms" er nummereret med et tal fra 0 og opefter. Formularen "form1" kan således kaldes med forms[0] - fordi det er den første formular i dokumentet. Formularen "form2" kan kaldes med forms[1] osv.

  var formIndex;

Så deklareres en ny variabel ved navn formIndex

  for (formIndex = 0; formIndex < numberForms; formIndex++)

Der startes en for-løkke ved hjælp af tre betingelser:
1. formIndex sættes ved start til 0.
2. Løkken skal blive ved så længe formIndex < numberForms.
3. Ved hvert gennemløb skal formIndex øges med 1.

      alert(document.forms[formIndex].name);

Det eneste, der sker inde i selve løkken, dvs. en gang for hver formular i dokumentet, er at navnet på forms[formIndex] "alertes", dvs. vises i en dialogboks. Husk på, at formIndex i første gennemløb er 0, så 1 og derefter 2, så i "virkeligheden" er forms[formIndex] det samme som hhv. forms[0], forms[1] og forms[2] - altså de tre formularer, der er oprettet nede i selve hmtl-koden.


Håber, det giver mening??
Avatar billede stroke1 Nybegynder
13. juni 2003 - 15:42 #8
Giver noget mening, men forstår ikke at det er ligegyldigt om linien

<BODY LANGUAGE=JavaScript onload="window_onload()">

står hvor den gør, eller nederst i programmet ????

Der sker nøjagtigt det samme.

Mht. til document.forms[formIndex].name) er name så identisk med forms[], dvs name = det der står i forms[] ???
Avatar billede edutasia Nybegynder
13. juni 2003 - 16:23 #9
"name" er det, der står i attributten "name" i HTML-koden. F.eks. er den følgende form den første i dokumentet - og dermed er den altså forms[0]. Værdien af dens "name" er "form1". Derfor er forms[0].name altså lig med "form1":

<FORM NAME="form1">
<P>This is inside form1</P>
</FORM>

Linien

  <BODY LANGUAGE=JavaScript onload="window_onload()">

er faktisk ugyldig - den er en blanding af to tags:

  <BODY onload="window_onload()">

og

  <SCRIPT LANGUAGE=JavaScript>
Avatar billede skovenborg Nybegynder
13. juni 2003 - 17:40 #10
Onload referer jo til en event, som starter når siden er loadet.

Hvis du kalder funktionen nederst i programmet, bliver funktionen kørt når scriptet bliver gennemlæst i starten.

Det giver det samme resultat, men de fleste vælger at køre funktionen når siden er loadet helt og ikke før.
Avatar billede stroke1 Nybegynder
13. juni 2003 - 22:16 #11
dvs onload gør at funktionen først kaldes når this is form 1, this is form 2 , this is form 3 er skrevet på skaærmen ????????
Avatar billede skovenborg Nybegynder
13. juni 2003 - 23:05 #12
The onload event occurs when the user agent finishes loading a window or all frames within a FRAMESET

Sådan står der i HTML 4.01 "manualen". Dvs. altså sige at når siden er færdig med at loade og klar til brug. Men hvis dit script virker på begge måder kan det være ligemeget, hvad du vælger.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester