Nej, NU står min JavaScript verden sgu ikke længere :(
roenving, fint nok, det virker...men hvorfor? I min verden burde det der ekstra Array være unødvendigt, da jeg kun skal bruge 1 et-dimensionelt og ikke 1 to-dimensionelt array, eller resette mit array, men det er for mig at se en af de 2 ting, der bliver gjort :(
roenving ork ja, den fejl med Indeks opdagede jeg for flere dage siden ;) Men kan du ikke forklare mig logikken i hvorfor man skal erklære hvert enkel array endnu en gang? :)
Du prototyper en attribut som hedder Streng -- den vil selvfølgelig kun virke hvis du bruger præcis 'Streng' ...
Hvis du skulle have Dato må du jo også sætte den på, men så er det jo nemmere bare at erklære det som et Array, så kan du bruge .hvadSomHelst eller ['hvadSomHelst'] som indeks !-)
Det er løgn det her...NU forstår jeg hvad du mener...jamen, jeg havde slet ikke SET den fejl :( Jeg kunne bare ikke forstå, hvorfor det var nødvendigt at skulle erklære dem 2 gange...DOH!!! :(
Okay, det giver stadig ikke rigtigt mening det her...
Nu har jeg rettet fejlen, og har følgende kode:
<SCRIPT LANGUAGE="JavaScript"> var Indeks=2 Array.prototype.Streng=null Kalender=new Array(2) for (UgeTaeller=1;UgeTaeller<=Indeks;UgeTaeller++) { Kalender[UgeTaeller].Streng=UgeTaeller alert(Kalender[UgeTaeller].Streng) } </SCRIPT>
Det virker så ikke. Men tilføjer jeg en ekstra linje med new Array()
<SCRIPT LANGUAGE="JavaScript"> var Indeks=2 Array.prototype.Streng=null Kalender=new Array(2) for (UgeTaeller=1;UgeTaeller<=Indeks;UgeTaeller++) { Kalender[UgeTaeller]=new Array() Kalender[UgeTaeller].Streng=UgeTaeller alert(Kalender[UgeTaeller].Streng) } </SCRIPT>
Og det er det, jeg ikke forstår logikken i, men som jeg gerne vil prøve at forstå logikken i...hvorfor jeg skal generklære hvert enkelt array for at det virker?
To eksempler fra 'The Javascript Bible' skulle gerne lede dig på vej:
<html> <head> <title>String Object Prototype</title> <script type="text/javascript"> function makeItHot(){ return "<font color='red'>" + this.toString() + "</font>" } String.prototype.hot = makeItHot; </script> </head> <body> <script type="text/javascript"> document.write("<h1>This site is on " + "FIRE".hot() + "!!</h1>") </script> </body> </html>
-- og det andet:
<html> <head> <title>Array prototypes</title> <script type="text/javascript"> // add prototype to all Array objects Array.prototype.sponsor = "DG"; a = new Array(5); b = new Array(5); c = new Array(5); // override prototype property for one 'instance' c.sponsor = "JS"; // this one picks up the original prototype d = new Array(5); </script> </head> <body><h2> <script type="text/javascript"> document.write("Array a is brought to you by: " + a.sponsor + "<p>"); document.write("Array b is brought to you by: " + b.sponsor + "<p>"); document.write("Array c is brought to you by: " + c.sponsor + "<p>"); document.write("Array d is brought to you by: " + d.sponsor + "<p>"); </script> </h2> </body> </html>
-- du bruger altså simpelthen prototype i en lidt forkert kontekst !-)
Du har stadig ikke fat i, at hvis du prototyper Array, så er det _hele_ arrayet som får attributten og ikke de forskellige forekomster inde i som får attributten !-)
DEN forklaring gav mening!!! Det vil altså sige at hvis man f.eks. sammenligner med en tabel, så er det selve tabellen, der får den prototype, og IKKE de enkelte celler?
Aha...men det er altså ikke logisk ;) Ikke i mine øjne, i hvert fald :)
Synes godt om
Ny brugerNybegynder
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.