Reputation: 690
Past 10 it will make the minimum the 10 and say the 6 the maximum aside from the number "1". I'm not sure why and if someone can let me know or push me towards the answer that would be great.
function btnMinMax_onclick()
{
// assign textbox elements to variables for easier access
var firstTextbox = document.getElementById("txtNum1");
var secondTextbox = document.getElementById("txtNum2");
var minTextbox = document.getElementById("txtMin");
var maxTextbox = document.getElementById("txtMax");
var num1 = firstTextbox.value;
var num2 = secondTextbox.value;
var isMin = determineMinimum(num1, num2);
var isMax = determineMaximum(num1, num2);
minTextbox.value = isMin;
maxTextbox.value = isMax;
}
function determineMinimum(number1, number2)
{
if (number1 < number2){
return number1;
} else {
return number2;
}
}
function determineMaximum(number1, number2)
{
if (number2 > number1){
return number2;
} else {
return number1;
}
}
Upvotes: 1
Views: 64
Reputation: 100361
Well you have a problem here:
var num1 = firstTextbox.value;
var num2 = secondTextbox.value;
var isMin = determineMinimum(num1, num2);
var isMax = determineMaximum(num1, num2);
The .value
will get you a string
. But you want to compare numbers, so you have to convert the string to a number before comparing it.
You could do it like this:
function determineMinimum(number1, number2) {
number1 = Number(number1);
number2 = Number(number2);
// your code here
}
Upvotes: 0
Reputation: 155477
The values you're pulling from the text boxes are String
, not Number
. You need to convert explicitly or it will order lexicographically, not numerically.
Simplest solution is to change:
var num1 = firstTextbox.value;
var num2 = secondTextbox.value;
to:
var num1 = parseInt(firstTextbox.value, 10);
var num2 = parseInt(secondTextbox.value, 10);
so you have real integer values, not strings that look like integers. Use parseFloat
instead if you need to accept non-integer values (e.g. 3.14
).
Upvotes: 3