Søger hjælp til dette javascript

Tags:    javascript

Jeg er nybegynder med javascript, er også løbet ind i et problem.
Jeg har fået en opgave, hvor jeg skal lave en udregningsformet til et blikkenslager firma.
Selve grundformen har jeg delvist løst, men har problem med at få den sidste beregningsdel med også.
Er der nogle der kan hjælpe?

Jeg har vedhæfter javasriptet, og det er den del med "Beregning incl. montage" hvor det er meningen at de 4 meter mål der indtastes skal + og x med timepris + transportpris og lægges sammen med den første beregning. Er det muligt ? :-)

<head>
<script type="text/javascript">
function processForm() {
//get form variables
var theItems = document.getElementsByName( "item" );
var theQty = Number( document.getElementById( "qty" ).value );
var theQty2 = Number( document.getElementById( "qty2" ).value );
var theQty3 = Number( document.getElementById( "qty3" ).value );
var theQty4 = Number( document.getElementById( "qty4" ).value );
var theQty5 = Number( document.getElementById( "qty5" ).value );
var theQty6 = Number( document.getElementById( "qty6" ).value );
var theQty7 = Number( document.getElementById( "qty7" ).value );
var theQty8 = Number( document.getElementById( "qty8" ).value );

//variable for selected item
var selectedItem;

//variable for order total
var orderTotal = 0.00;

//the display box
var outBox = document.getElementById( "total" );


//set selectedItem = checked item
for(var i = 0; i < theItems.length; i++) {
if( theItems.checked) {
selectedItem = theItems.value;
break;
}
}

//get price for selected item
switch(selectedItem) {
case "A":
total = 2.1483;
break;
case "B":
total = 2.5483;
break;
case "C":
total = 3.1483;
break;
default:
total = 0.00;
}

//figure final total
total = (total * 1.45 * theQty * theQty2 + total * 1.45 * theQty3 * theQty4 + total * 1.45 * theQty5 * theQty6 + total * 1.45 * theQty7 * theQty8 + 100) ;

//output to text box
outBox.value = "Kr." + total.toString();

}
</script>
</head>

<body>
<legend>Beregning med clickfals og blank zink</legend>
<br />
<input type="radio" name="item" value="A" />Blank zink <br />
<input type="radio" name="item" value="B" />Quartz zink <br />
<input type="radio" name="item" value="C" />Anthra zink
</fieldset>
</td>
</tr>
<tr>
<td colspan="3">
<br />
<br />
Stern ved facade
<br />
Højde cm <input type="text" id="qty" size="3" maxlength="3" value="1" /> Længde m <input type="text" id="qty2" size="3" maxlength="3" value="1" /> <br />
<br />
Stern ved gavl
<br />
Højde cm <input type="text" id="qty3" size="3" maxlength="3" value="1" /> Længde m <input type="text" id="qty4" size="3" maxlength="3" value="1" /> <br />
<br />
Underbeklædning facade
<br />
Højde cm <input type="text" id="qty5" size="3" maxlength="3" value="1" /> Længde m <input type="text" id="qty6" size="3" maxlength="3" value="1" /> <br />
<br />
Underbeklædning gavl
<br />
Højde cm <input type="text" id="qty7" size="3" maxlength="3" value="1" /> Længde m <input type="text" id="qty8" size="3" maxlength="3" value="1" /> <br />
<br />
<input type="button" id="submit" value="Beregn" onclick="processForm()" />
</form>
Pris: <input type="text" id="total" size="10" maxlength="10" readonly="readonly" value="0" />
<br /><br />
<input type="button" id="submit" value="Beregn" onclick="processForm()" />
</form>
Pris incl. montage: <input type="text" id="total2" size="10" maxlength="10" readonly="readonly" value="0" />
</td>
</tr>
</table>
</body>




jeg har lidt svært ved at overskue din kode, gider du ikke lige smide det i en [code] boks og så skrive mere klart i din kode hvad du forventer som resultat, og hvorhenne du forventer det.




Udover det Brian siger, så kan jeg finde </form> tags, men ikke deres start tags.

Usigende navne som 'A', 'B', 'C' og theQty til theQty8 gør det sværer for andre at forstår din kode, vil formentlig også gøre det sværer for dig selv efter et længere fravær fra koden.

Magisk konstanter er også dårlige et er at du hvis de skal rettes skal der skrives flere steder i koden og to du har ikke et navn for konstanten

total = (total * 1.45 * theQty * theQty2 + total * 1.45 * theQty3 * theQty4 + total * 1.45 * theQty5 * theQty6 + total * 1.45 * theQty7 * theQty8 + 100) ;

Når du ikke får den værdi du forventer, kan du alert de værdier der bliver brugt for lave værdien.

Hvis du havde gjort det ville du have opdaget at total altid er 0.

Når du så havde alerted selectedItem ville du opdage at du aldrig fik værdien i radio gruppen.

Du ville da vide at det her er forkert:
Fold kodeboks ind/udKode 


Når du gennemløber et array skal du huske at indeksere det som et array:
Fold kodeboks ind/udKode 





Indlæg senest redigeret d. 16.06.2010 17:41 af Bruger #5620
Du bør iøvrigt selvfølgelig også gøre brug af de normale regler for at gøre matematiske ligninger simplere:
Det her:
total = (total * 1.45 * theQty * theQty2 + total * 1.45 * theQty3 * theQty4 + total * 1.45 * theQty5 * theQty6 + total * 1.45 * theQty7 * theQty8 + 100) ;

Med reglen a*b+a*c => a*(b+c) kan ovenstående omskrives til dette:
total = total * 1.45 * (theQty * theQty2 + theQty3 * theQty4 + theQty5 * theQty6 + theQty7 * theQty8) + 100;





t