Reputation: 706
I am writing a function to calculate the sum based on the values chosen in selection boxes. How can I make the below JavaScript code more succinct?
<select name="test" id="mySelect1" style="font-size:10px" onchange="Calculate()">
<option value="onePoint">1</option>
<option value="halfPoint">1/2</option>
</select>
<select name="test" id="mySelect2" style="font-size:10px" onchange="Calculate()">
<option value="onePoint">1</option>
<option value="halfPoint">1/2</option>
</select>
function Calculate()
{
var selectedValue1 = document.getElementById("mySelect1").value;
var selectedValue2 = document.getElementById("mySelect2").value;
if (selectedValue1 == "onePoint" && selectedValue2 == "onePoint")
{
var total = 2;
}
else if (selectedValue1 == "halfPoint" && selectedValue2 == "halfPoint")
{
var total = 1;
}
else if (selectedValue1 == "onePoint" && selectedValue2 == "halfPoint")
{
var total = 1.5;
}
else if (selectedValue1 == "halfPoint" && selectedValue2 == "onePoint")
{
var total = 1.5;
}
document.getElementById("demo").innerHTML = total;
}
Upvotes: 0
Views: 92
Reputation: 2075
Assuming there are just a few distinct values:
var values = {
onePoint: 1,
halfPoint: 0.5
}
function Calculate() {
var value1 = values[document.getElementById("mySelect1").value];
var value2 = values[document.getElementById("mySelect2").value];
document.getElementById("demo").innerHTML = value1 + value2;
}
Upvotes: 2
Reputation: 138427
const selectedValue1 = document.getElementById("mySelect1").value === "onePoint" ? 1 : 0.5;
const selectedValue2 = document.getElementById("mySelect2").value === "onePoint" ? 1 : 0.5;
const total = selectedValue1 + selectedValue2;
You may turn the values into numbers by using a ternary (?
), then you can simply add them.
Upvotes: 2