11. august 2005 - 22:23Der er
11 kommentarer og 1 løsning
Gemme objekt i liste
Ohøj,
Jeg sidder i øjeblikket og bakser med at gemme et objekt i en liste.
Jeg opretter et object, og tilføjer det til en liste: === var tmpLength = dreamArr.length; dreamArr[tmpLength] = new Object(); dreamArr[tmpLength].name = document.dreamsFrm.name.value; dreamArr[tmpLength].desc = document.dreamsFrm.desc.value;
var optionName = new Option(dreamArr[tmpLength].name, dreamArr[tmpLength], false, false); dreamList.options[dreamList.length] = optionName; ===
Det fungerer i og for sig udemærket. Problemet opstår når jeg vil hente mit objekt frem igen: === for (var i=0, l=dreamList.options.length;i<l;i++) { if (dreamList.options[i].selected) { var updateObj = dreamList.options[i].value; document.dreamsFrm.name.value = updateObj.name; document.dreamsFrm.desc.value = updateObj.desc; } } === Mine felter bliver blot udfyldt med undefined istedet for det, jeg regnede med skulle være i objektet. Hvis jeg udskriver updateObj, får jeg som forventet afvide at der er tale om et objekt: [object Object]
Objektet virker fint før jeg henter det frem. Tilgår jeg det før jeg gemmer det, kan jeg hente name og desc fint frem.
Mit spørgsmål er derfor om det overhovedet kan lade sig gøre at gemme et objekt i en liste, og hvis ja, hvad gør jeg galt?
- men det er - udfra de kodestumper, du leverer - svært at se, hvordan dit variable-scope ser ud. Men variablen 'dreamArr' skal jo nok være erklæret globalt :)
bah - kan jeg nu ikke engang skrive et rigtigt navn... beklager roenving, ville ikke være ubehøvlet ved at skrive dit navn forkert, men så ganske enkelt forkert :o)
Man kan vel sige, at der er to tilgange til kodning af JS-applikationer: 1. Den en programmør vil bruge (Læs: uddannet, professionel programmør) 2. Den en autodidakt HTML-klamper vil bruge
Den 'rigtige' programmør opbygger en abstrakt objekt-struktur med metoder, properties og events. Den har for så vidt intet med interface'et at gøre. Interface'et bruger han kun som 'håndtag' og 'tavler', der giver brugeren adgang til at sende beskeder frem og tilbage til den bagvedliggende, abstrakte struktur - hvor hele afviklingen af applikationen foregår.
HTML-klamperen roder hellere end gerne sit interface sammen med selve programkoden. Faktisk tager han udgangspunkt i interface'et og hægter alt muligt op på dette, hvilket giver en helt anden - og langt mere vakkelvorn - kode :)
I den forbindelse giver array-løsningen den absolut bedste, mest robuste og mest vedligeholdelses venlige kode. Om så du opretter objektet med den ene eller den anden constructor, betyder mindre :)
Hehe, lader til min kode kan give emner til diskution :-) Som sagt, blot et stykke test inden den endelige udgave laves - og ja, der er model/view seperation inde i billedet :o)
- njaahhh ... det kræver jo uenighed - og jeg tror faktisk, at 'rundsving' og jeg er temmelig enige på dette punkt :) - og når jeg nu ser, du selv bruger ordet 'model', kan jeg jo regne ud at yderligere 'nu skal du bare høre ...' er så inderligt spild (på den fede måde) ;o)
Tak for points :)
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.