22. november 2009 - 12:00Der er
7 kommentarer og 1 løsning
hjælp til udregning af forbrug
Hej Er der en eller anden her der kan hjælpe mig med at få denne til at virke ?
Højde i meter Bredte i meter rækkeevne i m2 antal gange og det der står nederst "Du skal bruge xx,xx Liter" må gerne være usynlig indtil man klikker beregn
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
hvis du vil have lidt forklaring: if (browserID=="n"){ hjd = document.getElementById("hjd"); brd = document.getElementById("brd"); ant = document.getElementById("ant"); svar = document.getElementById("svar"); dkn = document.getElementById("dkn"); } det er for, at firefox også virker - ikke alle bruger Internet Explorer og når der læse data, som fx brd.value.replace(',','.') .value er data, og .replace(',','.') sørger for at javascript (der kun kan . som decimaltegn) kan se tallet med decimaler 2,5 meter bliver derfor læst som 2.5
i svaret er der .toFixed(2) det er nok med to decimaler - ingen afmåler 10,25347L til at male, og .replace('.',',') er for at rette javascript tilbage til svarets komma - altså 10,25 i stedet for javascripts 10.25
Et lille tip til claes57 - Når du benytter dig af IE's udpakkende variabel til element henvisning kan du i visse tilfælde risikere fejl som f.eks. hvis du har to elementer med henholdsvis id="logo" og name="logo" ... IE forstår ikke hvilket element du i en sådan situation skal bruge og vil derfor fejle.
Du vil kunne spare noget kode ved at deklarere de brugte variabler som variabler eks. var hjd, brd, ant, svar dkn; og så bruge variabel tildeling til elementet for alle browserne, så undgår du at bruge IE's dom genvejs-/sikkerhedsnet.
...
Kedede mig lige, så kaster lige et forslag til forkortet script del med alert ved fejl...
<script type="text/javascript"> function beregn(){ var t={"hjd":0,"brd":0,"ant":0,"dkn":0,"svar":0}; var err=0; for(i in t){ t[i]=document.getElementById(i); if(i=="svar")break; t[i+"v"]=t[i].value.replace(',','.'); if(!parseFloat(t[i+"v"])>0)err=1; }
if(err)alert("Alle tal skal være over 0"); ltr = t.hjdv * t.brdv * t.antv / t.dknv; svar.innerHTML =err?"": "Du skal bruge " + ltr.toFixed(2).replace('.',',') + " liter maling.";
<script type="text/javascript"> function beregn(){ var t={"hjd":0,"brd":0,"ant":0,"dkn":0,"svar":0}; var err=0; for(i in t){ t[i]=document.getElementById(i); if(i=="svar")break; t[i+"v"]=t[i].value.replace(',','.'); if(!parseFloat(t[i+"v"])>0)err=1; }
if(err)alert("Alle tal skal være over 0"); ltr = t.hjdv * t.brdv * t.antv / t.dknv; t.svar.innerHTML =err?"": "Du skal bruge " + ltr.toFixed(2).replace('.',',') + " liter maling.";
} </script>
(svar.innerhtml glemte jeg at rette til t.svar.innerhtml)
takker for den forbedrede kode. Og så fik du samtidig lagt en fejlkode ind for manglende data. Jeg tager metoden ad notam - det må være forskellen på én, som har lært javascript, og så en klamphugger som mig.
Lært og lært - jeg har fået noget "øvelse" i at scripte og lært en smule js ved at svare spørgsmål herinde... Nu er der fordele og ulemper ved at minimere ting helt, fordelen er at det fylder mindre - ulempen er dog at det kan være (meget) mere uoverskueligt ;)
Synes godt om
Ny brugerNybegynder
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.