Несколько проблем:
- Вы никогда не вызываете обратный вызов.
- Переменные
num1
и num2
являются локальными переменными в userMaths
, к ним нельзя получить доступот userMultiply
и userDivide
.Вы должны передать их как параметры.
Вам также следует преобразовать входные данные в числа с помощью parseFloat()
.Такие операторы, как *
и /
, делают это автоматически, но при добавлении userAdd
вы столкнетесь с проблемой, поскольку +
будет выполнять конкатенацию строк вместо добавления.
Возможно, вы захотитепереместить код, отображающий результат, в userMaths
, поскольку он одинаков для всех операций.
var userMultiply = function(num1, num2) {
return num1 * num2;
}
var userDivide = function(num1, num2) {
return num1 / num2;
}
function userMaths(callBack) {
let num1 = parseFloat(document.getElementById('firstNumber').value);
let num2 = parseFloat(document.getElementById('secondNumber').value);
document.getElementById("result").innerHTML = callBack(num1, num2);
}
<form>
1st Number : <input type="text" id="firstNumber" /><br> 2nd Number: <input type="text" id="secondNumber" /><br>
<input type="button" onClick="userMaths(userMultiply)" Value="Multiply" />
<input type="button" onClick="userMaths(userDivide)" Value="Divide" />
<p>The result is: </p>
<span id="result"></span>
</form>