Avatar billede mik789 Nybegynder
14. marts 2004 - 12:16 Der er 10 kommentarer og
1 løsning

Rod Morelos' scroller script

Dette er en udløber af: http://www.eksperten.dk/spm/476960

Jeg er ret imponeret over Rod's script, og nu vil jeg godt prøve at forstå det ;-) Vi starter med noget sikkert meget elementært...

Det drejer sig specielt om: http://rod.rant-on.net/dhtml/scroller1.html

Scriptet på denne side er bygget op som en lang definition af en variabel:

var scroller = { [en lang kommaopdelt liste med indbyggede funktionskald; hvert led har syntaksen "var: værdi"] }

Sp.: hvad betyder det at man lægger en loop om alle værdierne til højre for lighedstegnet i variabeldefinitionen, altså var scroller ) { ... } ?

Sp.: hvad ligger der i at syntaksen for alle ledene er denne var:værdi ? I kommaopdelte lister plejer man at bruge var=værdi ?

Sp. hvordan fungerer linjer som disse:
    mouseUp: function(e)
    init: function()
- hvad refererer "function" til her ?

//mik
Avatar billede mik789 Nybegynder
14. marts 2004 - 12:18 #1
Hovsa! Retter lige:

Sp.: hvad betyder det at man lægger en loop om alle værdierne til højre for lighedstegnet i variabeldefinitionen, altså: var scroller = { ... } ?
Avatar billede olebole Juniormester
14. marts 2004 - 19:21 #2
<ole>

Det er ikke et loop, men et objekt, han konstruerer. Et objekt kan du i JavaScript oprette på tre måder:

function MyClass() {
  this.className = "Mit-eget-objekt";
  return this;
}
var myObject = new MyClass();
alert(myObject.className);

Eller:

var myObject = new Object();
myObject.className = "Mit-eget-objekt";
alert(myObject.className);

Eller:

var myObject = {"className":"Mit-eget-objekt"};
alert(myObject.className);

/mvh
</bole>
Avatar billede roenving Novice
14. marts 2004 - 19:54 #3
Har jeg forstået mik789 rigtigt, så ønsker han at oprette flere instanser af objekterne, og det skal gøres ved at bruge den første metode olebole beskriver:

var scroller1 = new scroller;
var scroller2 = new scroller;

osv.
Avatar billede olebole Juniormester
14. marts 2004 - 20:12 #4
Nej, det har du ikke, roenving  :)
mik789 prøver at diciffrere et script-lib - og prøve at forstå, hvad der står i det  ;o)
/mvh
Avatar billede olebole Juniormester
14. marts 2004 - 20:13 #5
... og jeg prøver at 'sdavø' til et fremmedord ... og det går jo heller ikke ligefrem upåklageligt  *LoooL*
Avatar billede mik789 Nybegynder
14. marts 2004 - 20:56 #6
olebole> jeps du har ret, det er det det drejer sig om. tak, jeg er med ;-)
Avatar billede olebole Juniormester
14. marts 2004 - 21:58 #7
Jeg kan godt udvide lidt:
Du ved, man kan oprette et array på denne måde:
  var myArray = new Array( "noget", "noget andet", "noget tredie" );
Så er myArray et tal-indekseret array, der f.eks. kan kaldes med:
  alert(myArray[1]); // Returnerer: "noget andet"

Det kan du også skrive med en short-hand constructor:
  var myArray = [ "noget", "noget andet", "noget tredie" ];
  alert(myArray[1]); // Returnerer: "noget andet"

Så kan du oprette associative arrays (arrays, der er indekseret med strenge):
  var myArray = new Array()
  myArray["et"] = "noget";
  myArray["to"] = "noget andet";
  myArray["tre"] = "noget tredie";
  alert(myArray["to"]); // Returnerer: "noget andet"

Der findes i JS ingen short-hand constructor (eller anden metode) til at oprette et associativt array 'on the fly'.
Heldigvis er vi i den situation, at et associativt array og et objekt i JS er to repræsentationer af samme type underliggende data-objekt. Derfor kan vi oprette et objekt (som jo har en short-hand constructor) og lade somom, det er et array  ;o)

  var myAssocArray = { "et":"noget", "to":"noget andet", "tre":"noget tredie" };
  alert(myAssocArray["to"]); // Returnerer: "noget andet"

Men vi kan også betragte det som det objekt, det jo er oprettet som:
  alert(myAssocArray.to); // Returnerer: "noget andet"
/mvh
Avatar billede olebole Juniormester
14. marts 2004 - 22:00 #8
PS: Her kan du derfor også anvende array'et som et objekt (kalde med dot-notation):
  var myArray = new Array()
  myArray["et"] = "noget";
  myArray["to"] = "noget andet";
  myArray["tre"] = "noget tredie";
  alert(myArray.to); // Returnerer: "noget andet"
Avatar billede olebole Juniormester
14. marts 2004 - 22:04 #9
PPS: I JS kan et objekts properties ikke have et tal som navn. Dette holder derfor ikke:
  var myArray = new Array( "noget", "noget andet", "noget tredie" );
  alert(myArray.1);
Avatar billede mik789 Nybegynder
15. marts 2004 - 10:03 #10
olebole> jamen tak for lektionen ;-) det var nyttigt... og det sidste med function som operator ved unavngivne funktioner fandt jeg ud af.

smart med objekt syntaks (dot syntaks) i stedet for assoc. array syntaks.

læg lige et svar...
Avatar billede olebole Juniormester
15. marts 2004 - 14:14 #11
Dot-notation eller array-notation - nuvel, det er ikke så tit, der er en væsentlig forskel (bortset fra udseendet). Dog kan array-notationen ved objekter være handy. F.eks:

function setStyle(prop, val) {
  HTML_ELEMENT.style[prop] = val;
}
setStyle( "backgroundColor", "red" );

Anyways, så blev dit spm. til en lille artikel om arrays og deres slægtskab med objects (http://www.eksperten.dk/artikler/227)  :)
/mvh
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