Avatar billede jerving Nybegynder
28. november 2002 - 15:57 Der er 5 kommentarer og
1 løsning

Mystisk fejl i sum af variabler

Hej,

Jeg har lavet en funktion til et site, hvor der i et mc bregnes en mellempris(variablen _root.preBegn) og derefter kan MC'et trækkes ned i en indkøskurv (hvor der er en scrollPane i), hvor der i kurven herefter vises en total (variablen _root.totalBy).

Det er så konstrueret på den måde at hvis _root.totalBy som udgangspunkt er større end 0, skal _root.totalBy, når der lægges flere ting i indkøbskurven, blive summen af dens nuværende værdi og værdien af det der trækkes ned i kurven(_root.preBeregn).

hvis kurven som udgangspunkt er, altså hvis _root.totalBy er 0, skal _root.totalBy, når der trækkes noget ned i kurven, blive til værdien af det der trækkes ned(_root.preBeregn)

Dette fungerer udemærket første gang der trækkes noget ned i kurven, og også anden gang, hvor den korrekt udskriver summen af de to variabler, men når et tredie køb trækkes ned, er det som om den nulstiller, og skriver derved blot værdien af det, der trækkes ned(_root.preBeregn), frem for igen at tage summen af _root.preBeregn og den aktuelle _root.totalBy.

Er der nogen der kan fortælle mig, hvor jeg har dummet mig?


Koden inkl. funktionen der lister købne rent grafisk m. attachMovie.


if(Number(_root.saveNum)<1){
    i = 1;
}else{
    i = Number(_root.saveNum)+1;
}
this.attachMovie("byListItem","byListItem"+i,i+2);
eval("this.byListItem"+i)._x = 0;
eval("this.byListItem"+i)._y = ((eval("this.byListItem"+(i-1))._y)+(eval("this.byListItem"+(i))._height))+1;
eval("this.byListItem"+i).txtDisp = eval("_root.Udbyder")+" "+eval("_root.preBeregn")+(" kr.");
_root.saveNum = i;

if(Number(_root.totalBy>0)){
    _root.totalBy = Number(_root.totalBy)+Number(_root.preBeregn)+" kr.";
}else{
    _root.totalBy = Number(_root.preBeregn);
}

_root.pageContainer.totalBeregn.ListViewer.refreshPane();

Med venlig hilsen

jerving
Avatar billede pyroman Nybegynder
28. november 2002 - 16:17 #1
Kan du ikke ligge en fil ud på nettet?
Avatar billede barklund Nybegynder
28. november 2002 - 16:20 #2
Du kan da ikke putte "kr. " bagpå et tal, og så bagefter igen bruge det som et tal? Du er nødt til at have to variabler - en til at gemme den aktuelle værdi og en anden til et vise tallet: (nederst i stedet for din if{}else{}):

_root.totalBy += Number(_root.preBeregn);
_root.displayTotalBy = _root.totalBy + " kr.";

Og så skal dit tekstfelt hedde "displayTotalBy" istedet for "totalBy"....
Avatar billede jerving Nybegynder
28. november 2002 - 16:37 #3
Hold da kæft - øjeblik.. jeg skal lige ned og hente min hjerne i bilen - tror vist jeg kom til at lægge den i hanskerummet...

Og det mest pinlige er at jeg har siddet og gloet på koden den sidste halve time uden at se det.

Nåh, lad mig komme af med min skam og give dig dine points barklund ;o)

Hvis du lige laver et svar...

Mange tak.
Avatar billede barklund Nybegynder
28. november 2002 - 16:45 #4
Så det virker?

Du bør også rette lidt til i starten... Det er ingen grund til at gøre noget specielt bare fordi "saveNum" er 0 - (0+1) giver jo også 1, så du kan bare skrive (istedet for øverste if-then-else):

i = ++_root.saveNum;

Så har du lavet "saveNum" 1 større og givet "i" den samme værdi... Derfor er linien "_root.saveNum = i" også overflødig nu...

/Barklund
Avatar billede jerving Nybegynder
28. november 2002 - 16:49 #5
Thx!
Avatar billede barklund Nybegynder
28. november 2002 - 16:55 #6
Og tark for de overvældende mange point :o)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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