function getName(){ return name; } function getParrentId(){ return parrentId; } </script>
-------------------output--------------- JensHansOle ---------------------------------------- Håber der er nogen som kan svare på om det kan lade sig gøre, og hvis det kan lige give et lille eksempel over hvordan. på forhånd tak
jeg er ved at prøve at lave en efterslægtstavle, hvor der skal være mulighed for heletiden at kalde de personer som ligger før, havde tænk på at bygge det op som en graf, med refferencer både til den person(knude) som peger på en (forældre) og de personer(knuder) som man peger på(børn)
Har lavet nogetligende i java, men er lidt i tvivl om man bare kan kalde de forskellige dokumenter(klasser) uden at bruge denne metode: <script type="text/javascript" src="font.js"></script> men bare refferer direkte til et dokument(klasse)
- sagt på en anden måde: OOP er ikke så forskellig i forskellige srpog. 'Kunsten' ligger ikke i koden, men i at opstille modellen for objektet/objekterne ... deres instantiering, slægstsskab og anvendelse :)
Du kan sagtens opbygge et objekt (via en funktion), som kan instatieres mange gange, og bl.a. indeholde properties (variabler), som peger på andre instanser af det samme objekt, men constructoren (funktionen) skal så kaldes med de(n) nødvendige henvisning(er) til (parent-) objekter, og skal prototypes med en funktion, som kan tilføje nye (child-) objekter og f.eks. tildele værdier til andre properties på objektet !-)
for en klasse -------main----------- <html> <script> write.document(a1a.getName()); </script> </html>
-------a1a.html-------------//et nyt dokument <script> name="Jens"; parrentId=a1.html;
function getName(){ return name; } function getParrentId(){ return arrentId; } </script> ------------------------------------------------ er det helt i skoven? Hvis det kan lade sig gøre at lave et eksempel noget i stil med ovenstående, bare hvor det virker i javascript, vil det egentligt være nok til at komme igang.
Jeg ved ikke helt, hvor det er, vi taler forbi hinanden. Jeg ved godt, man i f.eks. Java og Visual Studio arbejder med klasser som selvstændige dokumenter - men sådan er JavaScript ikke indrettet.
Derudover vil man jo ikke i Java have en klasse for hver 'familieknude'. Man vil have én klasse, der instantieres for hver knude.
I JavaScript har man et objekt - eller rettere en object-constructor funktion (der sagtens kan stå skrevet i samme dokument som resten af koden). Dette objekt instantieres for hver knude, ved at kalde funktionen med keyword'et 'new'.
Hvordan koden skal struktureres, kommer anpå, hvordan den skal bruges - hvilket jeg stadig ikke aner det første om.
At du skulle have skrevet noget fungerende i Java, undrer mig såre med de forklaringer, du indtil nu har givet. På mig virker det slet ikke, somom du er inde i OOP-tankegangen. Det er ikke en programmatisk øvelse, men en mental - og derfor helt sprog-uafhængig.
mit største problem er at jeg ikke kan hente en variabel fra et andet dokument. fx. jeg har et dokument som hedder index.html. jeg vil gerne hente variablen name fra a1a.html ----index.html------------ <html> <script> document.write((a1a).getName()); </script> </html>
nyt dokument som hedder a1a,html ----a1a.html--------- <html> <script> name="hans"; function getName(){ return name; } </script> </html> -----------output bliver-------- hans
1. Grafen bygger jeg selv, ud af et dokument til hver knude, i hvert dokument laver jeg en refference til dens forældre, og nogle refferencer til de knuder som den peger på. NB, denne knude har kun en forældre --- overstående vil jeg selv bygge og programmet skal ikke rette i det----------
2. Jeg vil nu have mulighed for at hente variablen som indeholder navnet for den knude jeg kigger på. Samt navnet på forældre -knuden,
mit problem er så : Jeg ved ikke hvordan man tilgår en variable som er placeret i et dokument, fra et andet dokument.
nyt dokument som hedder a1a,html ----a1a.html--------- <html> <script> name="hans"; function getName(){ return name; } </script> </html> -----------output bliver-------- hans
----------------------------------------------------- Det er muligt det slet ikke kan lade sig gøre i javascript at kommunikere på den måde.
Det kan _ikke_ gøres med forskellige html-dokumenter !-)
-- i javascript laver du en objekt-constructor f.eks. sådan:
function myObject(parentNode){ this.children = new Array(); if(parentNode) parentNode.children[parentNode.children.length] = this; this.parent = parentNode ? parentNode : "root"; }
-- så kan man skabe et root-objekt sådan:
var myRoot = new myObject();
-- og instatiere nogle flere børn:
var ch1 = new myObject(myRoot); var ch2 = new myObject(myRoot); var ch11 = new myObject(ch1);
-- så vil myRoot indeholde to variabler:
Een tekst-variabel: myRoot.parent = "root"
-- og et array af objekter: myRoot.children[0] = ch1, myRoot.children[1] = ch2
Objektet ch1 vil så indeholde de samme to variabler, men .parent vil pege på root-objektet:
ch1.parent = myRoot
-- og arrayet af børn vil kun indeholde et objekt:
ch1.children[0] = ch11
Håber du kan tygge dig igennem, selv brugte jeg mange år til at forstå ideen i OOP, og det var først da jeg overhovedet blev nødt til at benytte mig af det, at det lykkedes at krølle hjernen rundt til at forstå ideen !-)
freesite >> Man skal være ret fantasifuld for at få det, du beskriver, til at minde om objekt orienteret programmering ... og det lyder ikke spor hensigtsmæssigt.
Det, roenving viser dig, er OOP - men det efterlader os stadig med problemet: Hvor skal data ligge? At have dem liggende i hver sin fil, lyder ingenlunde særlig hensigtsmæssigt :)
<olebole> Nej kan godt følge dig, tror det er min title som er rimelig misvisende, det jeg ville var at lave en datastruktur, og mit spørgsmål lød egentligt mest på om det kunne lade sig gøre at hente variabler i et andet html dokument direkte ved fx at skrive
a1.getName(); hvor a1 er navnet på det andet html dokument og getName er en funktion som returnere en string med et navn.
Grunden til at det helst skulle løses på den måde var, at dataerne allerede findes i html dokumenter, og det det er ikke mig som skal indtaste disse dataer.
<roenving> super takker for svar, det løste ikke helt mit problem, men kan se ud fra det du svarede at mit problem faktisk ikke kunne løses på den måde jeg havde tænkt mig i javascript. Tror istedet jeg vil arbejde med det som du lagde op, og se om der kan findes en løsning som kan lade sig gøre. overjer fx at læse filerne igennem en efter en og hente dataen og ligge dem ind i et array efter den metode som du beskrev.
!!men det drejer sig om ca 2000 filer med ca 10 linier data, kan du sige om løsningen vil give mig problemer med køretiden.
ved godt det er svært at sige noget om køretid, og vil også bare have et skøn.
<olebole> Database-løsningen vil betyde at jeg skal bruge mySql-database går jeg ud fra, og da dette program gerne skulle kunne køre både på en windows maskine og en linux server, uden at instalere apache på windows-maskinen. Er klar over at en database ville være den bedste løsning, men tror ikke det kan overholde overstående krav.
Hvis jeg har forstået det korrekt arbejder javascript i clienten, hvilket betyder at hver gang jeg åbner et nyt dokument skal dataerne hentes hjem over forbindelsen man køre med.
fx. hvis man køre med en forbindelse med 56 kbit/s, vil det for 2000 dokumenter på ca 5 kbyte pr styk tage ((2000*5)/(56/8))/60= 23,8 min at tegne grafen.
har jeg ret i dette.
ps. takker for alt den hjælp ind til videre. har nok været alt for fedtet med points, men regnede ikke med at det ville blive så omfattende. men kan godt se at det er bliver svært at løse problemet jeg først lagde op til, når det overhovet ikke kan løses på den måde jeg ville. :-)
Hvis i vil ligge et svar vil jeg meget gerne give nogle point's til jer begge, så tror jeg lige jeg vil gå i tænkebox igen og tænke de input jeg har fået, godt igennem, og vende tilbage igen med nogle mere specifikke spørgsmål.
Du kunne jo overveje at lægge data i et platforms uafhængigt format. Således _kunne_ man lægge data i en XML-fil - eller man kunne skrive det i JSON (JavaScript Object Notation) ... et JavaScript-format, som ved festlige lejligheder også kaldes 'fedt-fattigt XML'. Et XML-dokument kunne være skrevet på formen:
Så fylder filen trods alt ikke så meget - og 'koster ikke så meget' at hente ned. Den kan ligge under enhver platform - og begge kan behandles på klienten. Er det mon noget, du kan bruge?
ville du så her bruge en indexOf funktion til at læse dataerne ind.
Det hele må nemlig ikke ligge i en fil, men en fil pr person, ked af, at jeg er lidt besværlig. Tror heller ikke der er en effektiv måde at løse dette problem på. Ikke med de krav der stilles til opbygningen. :-). Men det smarte er, at de dataer som er / skal indtastes, så også kan ligge i dokumenter som man senere kan læse uden denne hjemmeside, og ikke skal have noget specielt instaleret for at læse.
til <olebole> takker mange gange for kommentare, tror jeg vil se på at sætte mig ind i mysql database, har aldrig arbejdet med sodanne en, så vil ikke lige stille flere spørgsmål før jeg har sat mig ind i hvordan man arbejde med den. tak for besvarelse at mine spørgsmål, det har været til kæmpe hjælp, ind til videre. fandt ud af en løsning i javascript. ---------------------index.html----------------------------- <html>
<script> vertexs = new Array(); child = new Array();
function addVertex(a,b,c,d,e,f,g,h){ vertexs[vertexs.length] = new vertex(a,b,c,d,e,f,g,h); }
function addParent(){ for(i=0; i<vertexs.length;i++){ for(j=0;j<vertexs.length;j++){ if(vertexs[i].parent==vertexs[j].id){ //finder parent og tilføjer den vertexs[i].parent=vertexs[j]; break; //stopper når parent findes } } } }
function addChild(){ for(i=0;i<vertexs.length;i++){ if (vertexs[i].parent) vertexs[i].parent.child[vertexs[i].parent.child.length] = vertexs[i]; } }
</html> -------------------vertex.js----------------------- function vertex(n,p,t,a,b,c,d,e){ this.id=n; this.named=p; this.parent=t; this.married=a; this.picture=b; this.comments=c; this.born=d; this.dead=e; this.child=new Array(); } ------------------------------------------- ps. hvis i vil ligge svar begge to vil jeg takke for denne gang og vende tilbage når jeg ved en mere om mysql databasen.
Ups ... jeg har lavet en fejl i array'et! Der er komma efter sidste element, hvilket introducerer et ekstra, tomt element ... eller rettere en ekstra tom plads :)
noder = [ ... ... "dato":1978-0707}, <-- Det komma skal slettes ];
Mit array er faktisk præcis mage til dit 'vertexs'. Mit er blot skrevet ud i hardcoded version :)
Tak for points ... og jeg er fint tilfreds med antallet ;o)
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.