13. maj 2005 - 13:54Der er
14 kommentarer og 1 løsning
udskriv de valgte enheder fra select, og udregn pris
Hejsa
Tror lige vi må starte med en advarsel... js er slet ik mig...så tingene skal nok skærres godt ud i pap :D
Har en side, som ved hjælp af php finder frem til hvor mange grupper (= select bokse) der skal skrives ud, og finder indholdet af dem.
Det jeg så gerne nu skal bruge er noget js som kan udskrive de valgte ting fra hver select (hvis den er valgt self.), og udregne en samlet pris på de valgte enheder.
grupperne som afgør antalet af select bokse.. er angivet med tal 1 - ??
-- og hvis du har værdierne i php skal de jo overføres til en javascript-variabel, men det kunne laves lettere, hvis værdien var angivet i value på options, f.eks.
<script type="text/javascript"> function visPris(elm){ var f = elm.form; var sels = f.getElementsByTagName("SELECT"); var samlet = 0; for(i=0;sels.length>i;i++){ if(sels[i].value.match(/^\d+(\.\d+)?$/)) samlet += +sels[i].value; } f.SamletPris.value = samlet; } </script>
<script type="text/javascript"> function visPris(elm){ var f = elm.form; var sels = f.getElementsByTagName("SELECT"); var samlet = 0; for(i=0;sels.length>i;i++){ if(sels[i].value.match(/\d+(\.\d+)?$/)) samlet += +sels[i].value.split("|")[1]; } f.SamletPris.value = samlet; } </script>
mangler så bare den lille ting, teksten fra de valgte ting også skal skrives ud...
der er så den lille tricky ting.. at der i nogle select bokse er valgt en standard vare... dvs.. at de varer skal udskrives fra starten, inden der vælges noget fra select boksene..
går ud fra det ville være muligt at genbruge noget af den tidligere kode..
hvor der så blev lavet en variabel mere.. og den blev lavet ud fra: samlet += +sels[i].value.split("|")[1]; som blev lavet om til noget lign: vare += +sels[i].value.split("|")[0]; ???
vare, skal så nok være et array, som bliver løbet igennem når det skal udskrives.. er det noget der kan lade sig gøre, og hehe... hvordan :s
er pt kommet frem til følgende: function visPris(elm){ var f = elm.form; var sels = f.getElementsByTagName("SELECT"); var samlet = 0; var varer = new Array; for(i=0;sels.length>i;i++){ if(sels[i].value.match(/\d+(\.\d+)?$/)) samlet += +sels[i].value.split("|")[1]; varer[i] = sels[i].value.split("|")[0] + "<br>"; } document.getElementById("SamletPris").innerHTML = samlet; document.getElementById("allevarer").innerHTML = varer;
}
virker ok... skal lige ha kigget lidt på den + "<br>" ting.. da det ik er optimalt.. men får da skrevet de valgte varer ud..
der må os være en måde at afgøre hvor langt det array er... når det bliver skrevet ud nu... slutter det med en del "," det må jo kunne undgåes på en eller anden måde ??
problemet der er tilbage pt er så, de varer der som standard er valgt.. stadig skal skrives ud, når siden åbnes første gang.. kan det klares med en funtion af en slags, som ligges ind i <body onload=""> ??
kan ikke se den store forskel på om jeg bruger join().
de "," bliver stadig skrevet med ud..
er det ikke på en måde muligt at sende det fulde array ud, og senere der hvor det skal benyttes, udskrive med en for-løkke ?? med return eller noget i den stil ??
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.