Avatar billede rune.osterdal.com Nybegynder
27. september 2001 - 16:37 Der er 3 kommentarer og
2 løsninger

null eller ikke et object - fejlmelding skriver forkert.... ?

Jeg sidder lige og leger lidt med arrays :
http://www.mediestud.dk/ADMIN/rune/div/adresseliste.html
Når jeg trykker \"Gem data\" skulle den gerne gemme data på første ledige plads i persondata-array\'et men der dukker følgende fejlmelding op :

Linie : 16
Fejl: \'document.form.feltinfo.0\' er null eller ikke et objekt...

Men jeg har altså skrevet :
document.form.feltinfo[0].value; -som du kan se i kilden...
hvad sker der?
--
her er det væsentligste kode :

<Script language=\"JavaScript\">
var feltinfo = new Array (\'Brugerid\',\'Fornavn\',\'Efternavn\',\'Adresse\',\'Postnummer\',\'By\',\'Telefonnummer\',\'Mobilnummer\',\'Email\',\'Hjemmeside\');
var persondata = new Array (300);

for (i=0; i<persondata.length; i++) {
    persondata[i] = 0; -- har prøvet andre værdier
}

function gemdata() {
temp = document.form.feltinfo[0].value;
found = 0;
for (i=0; i<=persondata.length-1; i++) {
    if (persondata[i] == temp) {
        found = 1;
        for (j=0; j<feltinfo.length; j++) {
            persondata[i+j] = document.form.feltinfo[j].value;
            }
        }
    } <!-- slut for-loop !
if (found == 0) {
    for (i=0; i<=persondata.length-1; i++) {
        if (persondata[i] == null) {
            for (j=0; j<feltinfo.length; j++) {
                persondata[i+j] = document.form.feltinfo[j].value;
                }
            break;
            }
        }
    }
document.form.messagebox.value = \"Data gemt for \" + persondata[1];
}
Avatar billede rune.osterdal.com Nybegynder
27. september 2001 - 16:39 #1
har prøvet med en slags 2-dimensionelt array uden held... Det må jeg kigge på en anden gang...
Avatar billede roenving Novice
27. september 2001 - 16:48 #2
Fejl-informationen er god nok, det er bare sådan den noterer det.

Men hvad med at bruge:

var feltinfo = new Array();
var feltinfo[\'Brugerid\']= new Array();
var feltinfo[\'Fornavn\']= new Array();
var feltinfo[\'Efternavn\']= new Array();
var feltinfo[\'Adresse\']= new Array();
var feltinfo[\'Postnummer\']= new Array();
var feltinfo[\'By\']= new Array();
var feltinfo[\'Telefonnummer\']= new Array();
var feltinfo[\'Mobilnummer\']= new Array();
var feltinfo[\'Email\']= new Array();
var feltinfo[\'Hjemmeside\']= new Array();

Så henter du værdierne med:

feltinfo[\'Efternavn\'][0]

hth
jes
Avatar billede jakoba Nybegynder
27. september 2001 - 17:05 #3
du kan evt også nøjes med af fjerne det  .value  du har sat på
    document.form.feltinfo[0];  //er lig med strengen \"brugerId\"

men roenvings forslag er bedre, det giver dig faktisk det 2-dimensionelle array du ønsker.
Avatar billede jakoba Nybegynder
01. oktober 2001 - 19:34 #4
Næe hov:
document.form.feltinfo[0].value; -som du kan se i kilden...
dutter ikke for feltinfo er jo ikke navn på et felt i formen. det er en variabel i vinduet.
Det du ønsker er nok at adressere feltet der har det navn der ligger i feltinfo. det gør du med:
document.form.elements[feltinfo[0]].value;

dun gemdata funktion bliver så fx:

function gemdata() {
    var flt = document.form.elements;  // så vi slipper for at skrive det hver gang.
temp = flt[feltinfo[0]].value;
found = 0;
for (i=0; i<=persondata.length-1; i++) {
    if (persondata[i] == temp) {
        found = 1;
        for (j=0; j<feltinfo.length; j++) {
            persondata[i+j] = flt[feltinfo[j]].value;
            }
        }
    } <!-- slut for-loop !
if (found == 0) {
    for (i=0; i<=persondata.length-1; i++) {
        if (persondata[i] == null) {
            for (j=0; j<feltinfo.length; j++) {
                persondata[i+j] = flt[feltinfo[j]].value;
                }
            break;
            }
        }
    }
document.form.messagebox.value = \"Data gemt for \" + persondata[1];
}

der er forresten ingen grund til at allokere 300 elementer til persondata idet du erklærer den. du kan til hver en tid udvide arrayet ved blot at assigne værdier til hidtil ubrugte array elementer:

var persondata = new Array(); //et array med 0 elementer.

if (found == 0) {
    i = persondata.length;  // første ubrugte element
    for (j=0; j<feltinfo.length; j++)
        persondata[i+j] = flt[feltinfo[j]].value;
}
Avatar billede rune.osterdal.com Nybegynder
02. oktober 2001 - 15:25 #5
tak for hjælpen til Jer begge!
Det virker lidt rodet for mig lige nu og derfor har jeg oprettet et lille eksempel jeg vil prøve at få til at køre :
http://www.eksperten.dk/spm/116171
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