Avatar billede mcclaud Nybegynder
24. december 2010 - 00:24 Der er 16 kommentarer og
1 løsning

Resultatsiden er forkert

Hej alle

Jeg har ét lille problem, jeg godt kunne tænke mig at få løst. Jeg har fået lavet et script, som egentligt er ganske udmærket, men når felterne i scriptet er blevet udfyldt, og resultatsiden modtages i min indbakke, er nogle af oplysningerne ubrugelige.

I rullelistefelterne får jeg nemlig tilsendt informationen 'value' i stedet for det, brugeren vælger fra listen. Se nedenstående udpluk for bedre at kunne gennemskue problemet. Link til hele scriptet kan ses her:
http://www.peterdue.com/prisberegning.htm

    Billede: <select size="1" name="maleri[1]" id="maleri_1" onchange="beregn(1)">
    <option>Vælg maleri</option>
    <option value="1694">Safety Door</option>
    <option value="1694">Hide & Seek</option>
    <option value="1194">Time for a Change</option>
    <option value="1194">A Star</option>

På resultatsiden for feltet 'maleri[1]' får jeg eksempelvis tilsendt oplysningen '1694' i stedet for det, jeg gerne vil vide - nemlig 'Safety Door'.

Kan det ændres?

mvh mcclaud
Avatar billede d3crypt0 Nybegynder
24. december 2010 - 01:50 #1
Det er nok forkert at have prisen til at stå i value feltet. Særligt fordi du til sidst laver et submit.

Jeg vil foreslå du lægger teksten i value, og i din onchange event 'beregn' metode, ser hvilken tekst du har fået ind og beregner prisen på den aktuelle tekst.
Avatar billede d3crypt0 Nybegynder
24. december 2010 - 01:59 #2
function beregn(typemaleri)
switch (typemaleri){
case "Safety door":
  alert("Safety door: smid følgende pris i felt ->"+ 1692)
  break;
case "noget andet":
  alert("noget andet: smid følgende pris i et andet felt: "+ 7863)
  break;
}
Avatar billede mcclaud Nybegynder
25. december 2010 - 22:13 #3
Hej d3crypt0

Det er lidt kompliceret for mig. Kan jeg lokke dig til at ændre i koden og præsentere den i sin fulde form?

:o) mcclaud
Avatar billede mcclaud Nybegynder
29. december 2010 - 13:48 #4
Hej d3crypt0

Tak for din indsats. Desværre kunne jeg ikke helt bruge svaret, da der er nogle udeståender. Dog vil jeg gerne belønne din indsats med point, så hvis du poster et svar, så accepterer jeg det.

Jeg har stillet et nyt spørgsmål, som klarlægger mine behov på en meget nem og overskuelig måde.

Se spørgsmålet her: http://www.eksperten.dk/spm/927538

Godt Nytår
mcclaud
Avatar billede d3crypt0 Nybegynder
31. december 2010 - 15:59 #5
Hejsa

Du behøver ikke at give mig point. Jeg samler ikke på dem. Jeg har desværre ikke været på nettet så meget. Desuden er jeg lidt imodt at skrive koden, det lærer du jo ikke meget af :)

Det der nok kan være en hurtigere løsning, er at du både har pris og navnet i value feltet. Fx. value="Safety Door;1692" og din beregn metode splitter på ';' i starten, og bruger anden plads i dit array til at beregne prisen udfra (array[1]).
Din side der modtager dit submit kand ligeledes splitte på ';' og fange første plads i dit array (array[0]), hvor din tekst står.

Det er nu ikke pænt, men er den hurtigste løsning.
Avatar billede mcclaud Nybegynder
01. januar 2011 - 22:16 #6
Hej igen d3crypt0

Jeg kan godt hitte ud af at tilpasse value-felterne (jeg har rettet det første til), men det andet er ikke lykkedes for mig... Jeg har ellers prøvet i nogle timer nu. Jeg tillader mig at håbe på lidt mere hjælp?

Se scriptet her:
http://www.peterdue.com/picturing-life/beregning/prisberegning.htm

;o) mcclaud
Avatar billede d3crypt0 Nybegynder
02. januar 2011 - 03:17 #7
Erstat:  onchange="beregn(1)" med  onchange="this.value"

Din beregn metode hedder:

function beregn(value){

var vaerdi = value.split(';');
var maleri = vaerdi[0];
var pris = vaerdi[1];

...så kan du efterfølgende arbejde videre med dine to variabler..
Avatar billede mcclaud Nybegynder
02. januar 2011 - 12:22 #8
Hej igen

Så har jeg foretaget de ændringer og har efter bedste evne justeret i koden efter dine anvisninger... Jeg kan desværre ikke få det til at virke, men jeg tror, at jeg er tæt på. Her er mit forslag til beregnings-delen:

    function beregn(value){
      var vaerdi = value.split(';');
      var maleri = vaerdi[0];
      var pris  = vaerdi[1];
      if(maleri > 0 && stoerrelse > 0){
        vaerdi[1] = number_format(maleri + stoerrelse,2,',','.');
      }else{
        vaerdi[1] = "0,00";
      }

Se hele koden her:
http://www.peterdue.com/picturing-life/beregning/prisberegning.htm

Jeg håber på flere tilretninger... Og Godt Nytår i øvrigt.

:o) mcclaud
Avatar billede d3crypt0 Nybegynder
02. januar 2011 - 18:13 #9
Tak og i lige måde...
Det var lidt sent igår...kan se jeg skrev noget forkert.
Jeg mente...
Erstat:  onchange="beregn(1)" med onchange="beregn(this.value)"

Jeg kigger lige resten igennem...
Avatar billede d3crypt0 Nybegynder
02. januar 2011 - 18:36 #10
Der er flere ting.

Jeg kan se din størrelse ikke er sat i koden, og værdien bliver heller ikke hentet. Ved yderligere eftersyn kan jeg se, at du skal bruge størrelse select boksen i kombination. Det betyder faktisk, at din beregn metode skal kaldes både ved ændring i den første select boks og i den anden select boks. Derfor skal din beregn metode nok ikke have nogle parametre men istedet. hente værdien ligsom jeg gør i koden her under størrelse.

Jeg er ikke helt med, hvorfor du bruger vaerdi[1] i din betingelse, da værdien er lagt ind i pris. Derfor har jeg skrevet pris ind istedet.

Endvidere kan jeg ikke se hvorfor, din størrelse værdi i value feltet skal være to-delt (50x50;1). I koden tager tager jeg derfor kun '50x50'. (Dvs. jeg har rettet i value i options på størrelserne til '50x50')

function beregn(value){
      var vaerdi = value.split(';');
      var maleri = vaerdi[0];
      var pris  = vaerdi[1];

//alert(maleri);
//alert(pris);

      var stoerrelse = document.getElementById('stoerrelse_1').options[document.getElementById('stoerrelse_1').selectedIndex].value;
alert(stoerrelse);
      if(maleri != '' && stoerrelse != ''){
        pris = number_format(maleri + stoerrelse,2,',','.');
      }else{
        pris = "0,00";
      }
      rabat();
    }

Husk du kan alert() dine værdier undervejs...så du kan se om de holder en værdi.
Man kan kun sammenligne tal værdier, når du spørger 'maleri > 0'...maleri holder på en tekst..og derfor er det mest korrekt at spørge om den er forskellig fra '', som betyder tom streng.
Avatar billede d3crypt0 Nybegynder
02. januar 2011 - 18:37 #11
FOrdi din beregn skal hente værdier baseret på valg, vil jeg fjerne 'Vælg størrelse' og 'Vælg maleri'...det vil spare for nogle yderligere checks.

    <option value="50x50" selected>50x50</option>
    <option value="80x80">80x80</option>
    <option value="100x100">100x100</option>
Avatar billede mcclaud Nybegynder
02. januar 2011 - 18:39 #12
Jeg har rettet til med onchange="beregn(this.value)" og lagt siden ud i cyberspace...

:o) mccalud
Avatar billede mcclaud Nybegynder
02. januar 2011 - 18:40 #13
Jeg kigger lige på dine ændringer og retter til i aften...  :o)
Avatar billede mcclaud Nybegynder
03. januar 2011 - 22:25 #14
Hej d3crypt0

Jeg har igen efter bedste evne forsøgt at rette scriptet til, men jeg er desværre ikke i mål endnu. Jeg får nogle sære alerts og beregningerne sker desværre ikke... Endvidere er jeg rigtig glad for, at der som udgangspunkt står 'Vælg maleri' og 'Vælg størrelse', så jeg tillader mig at håbe på, at de kan bibeholdes.

Klik her for seneste udgave af scriptet:
http://www.peterdue.com/picturing-life/beregning/prisberegning.htm

Jeg håber, at du stadig har mod på at hjælpe...

:o) mcclaud
Avatar billede d3crypt0 Nybegynder
05. januar 2011 - 08:58 #15
Alerts er for at se at du har værdierne...

for at inaktivere din alert skal du såmænd bare sætte // foran alert(stoerrelse);

At have default værdier i dine dropdown bokse vil introducere nogle check...så de værdier ikke bliver medregnet i beregningerne...
Avatar billede mcclaud Nybegynder
05. januar 2011 - 09:41 #16
Ok, det er let at komme af med de alerts. Det vil jeg kigge på i aften... Hvad værre er, så foretages der desværre slet ingen beregninger ved valg af malerier og størrelser. Desuden mangler scriptet at vide, at størrelsen spiller en rolle for prisen.

Ethvert billede har en udgangspris - det er det tal, som står til sidst i value-feltet. Denne pris svarer til et køb af billedet i størrelsen 50x50 cm. Vælger man størrelse 80x80 cm skal udgangsprisen hæves med kr. 600. Vælger man størrelse 100x100 cm skal udgangsprisen hæves med kr. 1.000.

http://www.peterdue.com/picturing-life/beregning/prisberegning.htm
Avatar billede mcclaud Nybegynder
22. januar 2011 - 14:26 #17
Jeg bliver desværre nødt til at lukke spørgsmålet ned... Der er ikke kommet et egentligt svar - øv øv.

:o( mcclaud
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