Avatar billede jtp Nybegynder
08. januar 2003 - 02:44 Der er 4 kommentarer

array == variabel ??

Hejsa alle

Jeg har et array-i-et-array som jeg udskriver vha. en forløkke. I denne forløkke har jeg lavet nogle if-else sætninger, som gerne skulle sammenligne en variabel med én af værdierne fra arrayet.

Arrayet ser således ud:

---klip------------
Session("ArrBasket") = new Array;
var laengde;
laengde = Session("ArrBasket").length;
Session("ArrBasket")[laengde] = new Array;

Session("ArrBasket")[laengde][0] = varenr;
Session("ArrBasket")[laengde][1] = varenavn;
Session("ArrBasket")[laengde][2] = enhed;
Session("ArrBasket")[laengde][3] = pris;
Session("ArrBasket")[laengde][4] = antal;
---klip------------



Det skulle gerne ende ud med noget i retning af dette:
---klip------------
745040    Carlsberg, Elephant    BOX    87,75    1     
745000    Carlsberg, Hof    BOX    70,25    1
745400    Heineken    BOX    92,75    1
745420    Holstein, Premium    BOX    70,25    1
745120    Tuborg, Gold Export    BOX    78,75    1
745100    Tuborg, Green    BOX    72,25    1
---klip------------



Problemet opstår når jeg forsøger, at lave en sammenligning på min værdi i arrayets position [i][0] med variablen "varenr".

Jeg VED, at disse værdier er identiske, men lige gyldigt hvad, så vil den ikke fange den. Jeg tænkte det måske var noget datatypesnask, så jeg har forsøgt, at tvinge datatyper igennem.

Min nuværende kode ser ud som følger:
---klip------------
<% @Language = JavaScript %>
<%
var varenr, varenavn, enhed, pris, antal;
varenr  = ""+Request.Form("varenr")
varenr  = parseInt(varenr);
varenavn = Request.Form("productname")
enhed    = Request.Form("unit")
pris    = ""+Request.Form("price");
pris    = pris.replace( /\,/g, "." )
pris    = parseFloat(pris);
antal    = ""+Request.Form("antal")
antal    = parseInt(antal);
url      = Request.Form("url");
       
{   
    var laengde;
    laengde = Session("ArrBasket").length;
    laengde = parseInt(laengde);

    for (var i=0; i<Session("ArrBasket").length; i++){
        if ( Session("ArrBasket")[i][0] == varenr ){
        Session("ArrBasket")[i][4] = (Session("ArrBasket")[i][4]+antal);

        Response.Redirect(url);                 
        }
        else {
        Session("ArrBasket")[laengde] = new Array;

        Session("ArrBasket")[laengde][0] = varenr;
        Session("ArrBasket")[laengde][1] = varenavn;
        Session("ArrBasket")[laengde][2] = enhed;
        Session("ArrBasket")[laengde][3] = pris;
        Session("ArrBasket")[laengde][4] = antal;

        Response.Redirect(url);
        }
    }
}
%>
---klip------------


Er der nogen, der kan hjælpe mig med at knække denne nød?

Håber jeg har forklaret mig tydeligt nok. Jeg er ikke helt stiv i javescript endnu :o)

På forhånd tak.
Avatar billede olebole Juniormester
08. januar 2003 - 03:29 #1
<ole>

For det første instantierer man et array med:
  var bla = new Array();
Husk parenteserne i 'new Array()'.

Dernæst kan du ikke skrive:
  Session("ArrBasket") = new Array;
Men f.eks:
  ArrBasket = new Array();

Altså noget i stil med:
  ArrBasket = new Array();
  var laengde;
  laengde = ArrBasket.length;
  ArrBasket[laengde] = new Array();

  ArrBasket[laengde][0] = "noget 1";
  ArrBasket[laengde][1] = "noget 2";
  ArrBasket[laengde][2] = "noget 3";
  ArrBasket[laengde][3] = "noget 4";
  ArrBasket[laengde][4] = "noget 5";

/mvh
</bole>
Avatar billede jtp Nybegynder
08. januar 2003 - 09:44 #2
Hejsa olebole

Tak for dit hurtige svar og undskyld min sene reaktionsevne. Skulle lige have et par timers nattesøvn :o)

Jeg er som sagt ikke skrap til javascript, men arrayet indeholder rent faktisk alle de ønskede værdier, når jeg udskriver det. Det kan godt være, at jeg ikke har initieret arrayet korrekt, men ikke desto mindr, så virker det rent faktisk godt nok. Der ER værdier i arrayet - og også de værdier jeg gerne vil have.

Problemet er rent faktisk kun, at jeg ikke kan lave den ønskede sammenligning.

Har du evt. andre forslag? Jeg er ved, at blive tosset.

Det sammenligningen gerne skulle håndtere, er jo at den skal løbe arrayet igennem og checke om variablen "varenr" eksisterer i arrayet i forvejen.
Hvis den gør det skal den kun opdatere position [i][4] ved at addere variablen "antal" med den eksisterende værdi i [i][4].
Hvis ikke den eksistere, skal den indsætte et nyt array indeholdende værdierne af variablerne:
"varenr"
"varenavn"
"enhed"
"pris"
"antal"

/jtp
Avatar billede olebole Juniormester
08. januar 2003 - 16:43 #3
Nej, det _kan_ ikke passe. Hvis du kan få den syntaks til noget som helst, må du vise mig en URL, hvor det lader sig gøre.

Du har bunker af problemer med den kode, du har skrevet. Hvis du ikke er god til JS, må du skrive det, du får hjælp til - ellers er det jo lige meget, om du får hjælp. Ikke mindst da du ikke selv kan overskue, hvor dine problemer ligger.
/mvh
Avatar billede olebole Juniormester
08. januar 2003 - 16:44 #4
Session("ArrBasket") er et kald til en funktion .... det kan du ikke lave til et array
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