I have this simple script. I’m trying to get the checked values and add them to a running total that’s in the diabled input box. I know it’s getting checked option but it’s not updating to the input box and I’m not sure why. Can anyone help me?
<html>
<head>
<script type="text/javascript">
function updateForm()
{
var type = document.pizzaForm.pizzaType;
var toppings = document.pizzaForm.toppings;
var pizzaType;
var toppings;
for(var i = 0; i <= type.length; i++)
{
if(type[i].checked)
{
total = type[i].value;
}
}
for(var i = 0; i <= toppings.length; i++)
{
if(toppings[i].checked)
{
toppings += toppings[i].value;
}
}
var total = pizzaType + toppings;
pizzaForm.total.value = total;
}
</script>
</head>
<body>
<h1>Order Pizza Here:</h1>
<form action="" method="get" name="pizzaForm">
What Type of Pizza Would You Like? <br />
<input type="radio" name="pizzaType" value="10.00" onchange="updateForm()" />Vegetarian<br />
<input type="radio" name="pizzaType" value="20.00" onchange="updateForm()" />Meat Lovers<br />
<br />
<br />
Extra Toppings: <br />
<input type="checkbox" name="toppings" value="2.00" onchange="updateForm()" />Extra Cheese <br />
<input type="checkbox" name="toppings" value="3.00" onchange="updateForm()" />Mushrooms <br />
<input type="checkbox" name="toppings" value="4.00" onchange="updateForm()" />Anchovies <br />
<br />
Total <input type="text" disabled="disabled" name="total" />
</form>
</body>
</html>
You have a few basic Javascript errors:
your for loops look like:
this means they will go from 0 to length (including length) = length + 1
It should be:
see the diffference?
<=is now<. (off by one error?)you are using
toppingsvariable twice. (javascript is really bad with this and lets you shoot yourself in the foot.) Also you should be initialisng all values.I’ve also added
Valueto the variables that hold numbers rather than elements. Other might prefix this or some such convention to remember it holds a value not a list of elements.the values in markup are strings use
parseFloat(to turn them into floats:also note the
+=means: add this to me. Equivalent topizzaTypeValue = pizzaTypeValue + ....there is no real need for the total variable. just add a comment if you want to remember it is the total.
See this jsFiddle: http://jsfiddle.net/F53ae/ to see it in action.