Dzieje się tak dlatego, że wartość zwracana z value (element html <input>) jest typu string.
function count()
{
takeValues();
console.log(typeof firstNumber, typeof secondNumber);
result = firstNumber+secondNumber;
alert(result);
}
w tym przypadku znak + powoduje łączenie dwóch łańcuchów tekstowych (concatenate).
Spróbuj użyć parseInt() (dla liczb całkowitych), sprawdź też parseFloat() (dla liczb zmiennoprzecinkowych) Number()
możesz też spróbować triku value * 1 lub + value
function takeValues()
{
firstNumber = document.getElementById('first-number').value * 1;
secondNumber = document.getElementById('second-number').value * 1;
console.log(typeof firstNumber, typeof secondNumber);
}
function takeValues()
{
firstNumber = + document.getElementById('first-number').value;
secondNumber = + document.getElementById('second-number').value;
console.log(typeof firstNumber, typeof secondNumber);
}
[ How to Convert String to Number in JavaScript ]