...

View Full Version : Round to the Decimal



Wayniac
05-29-2009, 01:04 AM
Can someone help me to round the result for txt_price. Also if the decimal can be placed to spots over.

Try selecting Arizona, that is a good example.

Thank you


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>

<form>
State
: <br>
<select name="combo0" id="combo_0" style="width:200px;">
<option value="">-select-</option>
<option value="1">Alabama</option>
<option value="2">Alaska</option>
<option value="70">Arizona</option>
<option value="4">Arkansas</option>
<option value="66">California</option>
<option value="6">Colorado</option>
<option value="7">Connecticut</option>
<option value="8">Delaware</option>
<option value="9">District of Columbia</option>
<option value="10">Florida</option>
<option value="11">Georgia</option>
<option value="12">Hawaii</option>
<option value="63">Idaho</option>
<option value="14">Illinois</option>
<option value="15">Indiana</option>
<option value="16">Iowa</option>
<option value="17">Kansas</option>
<option value="18">Kentucky</option>
<option value="19">Louisiana</option>
<option value="20">Maine</option>
<option value="21">Maryland</option>
<option value="22">Massachusetts</option>
<option value="23">Michigan</option>
<option value="24">Minnesota</option>
<option value="25">Mississippi</option>
<option value="26">Missouri</option>
<option value="62">Montana</option>
<option value="28">Nebraska</option>
<option value="65">Nevada</option>
<option value="30">New Hampshire</option>
<option value="31">New Jersey</option>
<option value="32">New Mexico</option>
<option value="33">New York</option>
<option value="34">North Carolina</option>
<option value="35">North Dakota</option>
<option value="36">Ohio</option>
<option value="37">Oklahoma</option>
<option value="61">Oregon</option>
<option value="39">Pennsylvania</option>
<option value="40">Rhode Island</option>
<option value="41">South Carolina</option>
<option value="42">South Dakota</option>
<option value="43">Tennessee</option>
<option value="44">Texas</option>
<option value="64">Utah</option>
<option value="46">Vermont</option>
<option value="47">Virginia</option>
<option value="60">Washington</option>
<option value="49">West Virginia</option>
<option value="50">Wisconsin</option>
<option value="51">Wyoming</option>
</select>
<BR>
<br>
Amount: <br>
<select name="combo1" id="combo_1" style="width:200px;">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br>
<!-- To present an outcome to this field -->
<br>
Sub-total: <br>
<input type="text" name="txtPrice" id="txt_price" readonly="readonly" style="width:200px;">
</form>

<script type="text/javascript">

// avoid using inline script like onclick and onchange, bad practice.

window.onload = function() {

var dropChange = function() {

var v1 = document.getElementById("combo_1").value, v2 = document.getElementById("combo_0").value;

//document.getElementById("txt_price").value = v1 * v2;

if (v2 == 70) {
if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 * 1.0795 + 9.50;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 * 1.0795 + 9.80;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 * 1.0795 + 11.50;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 * 1.0795 + 12.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 * 1.0795 + 12.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 * 1.0795 + 14.50;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 * 1.0795 + 14.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 * 1.0795 + 14.50;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 * 1.0795 + 14.50;
}
}

else if (v2 == 60) {
if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.50 + 8.90;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.80 + 10.25;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 + 11.50 + 15.00;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 + 12.00 + 17.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 + 12.00 + 25.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 + 14.50 + 27.00;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 + 14.50 + 42.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 + 14.50 + 43.00;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 + 14.50 + 43.50;
}
}

else if (v2 == 61) {
if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.50 + 8.90;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.80 + 10.25;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 + 11.50 + 15.00;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 + 12.00 + 17.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 + 12.00 + 25.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 + 14.50 + 27.00;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 + 14.50 + 42.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 + 14.50 + 43.00;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 + 14.50 + 43.50;
}
}

else if (v2 == 62) {
if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.50 + 8.90;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.80 + 10.25;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 + 11.50 + 15.00;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 + 12.00 + 17.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 + 12.00 + 25.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 + 14.50 + 27.00;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 + 14.50 + 42.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 + 14.50 + 43.00;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 + 14.50 + 43.50;
}
}

else if (v2 == 63) {
if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.50 + 8.90;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.80 + 10.25;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 + 11.50 + 15.00;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 + 12.00 + 17.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 + 12.00 + 25.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 + 14.50 + 27.00;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 + 14.50 + 42.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 + 14.50 + 43.00;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 + 14.50 + 43.50;
}
}

else if (v2 == 64) {
if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.50 + 8.90;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.80 + 10.25;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 + 11.50 + 15.00;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 + 12.00 + 17.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 + 12.00 + 25.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 + 14.50 + 27.00;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 + 14.50 + 42.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 + 14.50 + 43.00;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 + 14.50 + 43.50;
}
}

else if (v2 == 65) {
if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.50 + 8.90;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.80 + 10.25;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 + 11.50 + 15.00;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 + 12.00 + 17.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 + 12.00 + 25.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 + 14.50 + 27.00;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 + 14.50 + 42.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 + 14.50 + 43.00;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 + 14.50 + 43.50;
}
}

else if (v2 == 66) {
if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.50 + 8.90;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.80 + 10.25;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 + 11.50 + 15.00;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 + 12.00 + 17.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 + 12.00 + 25.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 + 14.50 + 27.00;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 + 14.50 + 42.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 + 14.50 + 43.00;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 + 14.50 + 43.50;
}
}

else if (v2 != (60 || 61 || 62 || 63 || 64 || 65 || 66 || 70)) {

if (v1 == 1) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.50;
}
else if (v1 == 2) {
document.getElementById("txt_price").value = v1 * 24.95 + 9.80;
}
else if (v1 == 3) {
document.getElementById("txt_price").value = v1 * 22.95 + 11.50;
}
else if (v1 == 4) {
document.getElementById("txt_price").value = v1 * 20.95 + 12.00;
}
else if (v1 == 5) {
document.getElementById("txt_price").value = v1 * 19.95 + 12.00;
}
else if (v1 == 6) {
document.getElementById("txt_price").value = v1 * 18.95 + 14.50;
}
else if (v1 == 7) {
document.getElementById("txt_price").value = v1 * 17.95 + 14.50;
}
else if (v1 == 8) {
document.getElementById("txt_price").value = v1 * 16.95 + 14.50;
}
else if (v1 == 9) {
document.getElementById("txt_price").value = v1 * 15.95 + 14.50;
}
}
};


document.getElementById("combo_0").onchange = dropChange;

document.getElementById("combo_1").onchange = dropChange;

};
</script>

</body>
</html>

Old Pedant
05-29-2009, 01:49 AM
Holy Overcode, Batman!

Let's PLEASE rewrite that!



window.onload = function() {

var dropChange = function() {
var v1 = parseInt( document.getElementById("combo_1").value );
var v2 = parseInt( document.getElementById("combo_0").value );

// this should be indented, but too bad...
var price;
switch ( v2 )
{
case 70:
var taxplus = 1.0795;
switch ( v1 )
{
case 1: /* fall thru...same as case 2 */
case 2: price = v1 * 24.95 * taxplus + 9.50; break;
case 3: price = v1 * 22.95 * taxplus + 11.50; break;
case 4: price = v1 * 20.95 * taxplus + 12.00; break;
case 5: price = v1 * 19.95 * taxplus + 12.00; break;
case 6: price = v1 * 18.95 * taxplus + 14.50; break;
case 7: price = v1 * 17.95 * taxplus + 14.50; break;
case 8: price = v1 * 16.95 * taxplus + 14.50; break;
case 9: price = v1 * 15.95 * taxplus + 14.50; break;
default: alert("Invalid v1 value for v2=70: " + v1);
}
break;

case 60: case 61: case 62: case 63: case 64: case 65: case 66:
switch ( v1 )
{
case 1: price = v1 * 24.95 + 9.50 + 9.80; break;
case 2: price = v1 * 24.95 + 9.80 + 10.25; break;
case 3: price = v1 * 22.95 + 11.50 + 15.00; break;
case 4: price = v1 * 20.95 + 12.00 + 17.00; break;
case 5: price = v1 * 19.95 + 12.00 + 25.00; break;
case 6: price = v1 * 18.95 + 14.50 + 27.00; break;
case 7: price = v1 * 17.95 + 14.50 + 42.50; break;
case 8: price = v1 * 16.95 + 14.50 + 43.00; break;
case 9: price = v1 * 15.95 + 14.50 + 43.50; break;
default: alert("Invalid v1 value for v2=" + v2 + ": " + v1);
}
break;

default: /* all other v2 values get here: */
switch ( v1 )
{
case 1: price = v1 * 24.95 + 9.50; break;
case 2: price = v1 * 24.95 + 9.80; break;
case 3: price = v1 * 22.95 + 11.50; break;
case 4: price = v1 * 20.95 + 12.00; break;
case 5: price = v1 * 19.95 + 12.00; break;
case 6: price = v1 * 18.95 + 14.50; break;
case 7: price = v1 * 17.95 + 14.50; break;
case 8: price = v1 * 16.95 + 14.50; break;
case 9: price = v1 * 15.95 + 14.50; break;
default: alert("Invalid v1 value for v2=" + v2 + ": " + v1);
}
}
document.getElementById("txt_price").value = "$" + price.toFixed(2);

document.getElementById("combo_0").onchange = dropChange;
documentt.getElementById("combo_1").onchange = dropChange;
};


So far as I could see, all of your v1-based prices were the same for all the v2 values from 60 to 66, so I wrote it like that. If some are different, you can split the cases, as need be.

I highlighted a couple of other omissions or things you asked about.

Could make this even more compact with use of object arrays, but ehhhh...this is probably okay.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum