Можно ли передать в функцию любой метод класса Math?
Делаю калькулятор на js Есть функции sin cos tg калькулятора, которые отличаются только методом класса Math, например, sin
function sin (){
var firstValue = document.getElementById("firstNumber").value;
var secondValue = document.getElementById("secondNumber").value;
var output =0;
if (firstValue == 0 && secondValue !=0) output = Math.sin(secondValue);
else if (secondValue == 0 && firstValue !=0) output = Math.sin(firstValue);
else if (firstValue ==0 && secondValue ==0) output =Math.sin(0);
else alert("Заполните только одно поле!");
document.getElementById("result").value = output;
}
Такой же код для cos и tg, только с Math.cos() и Math.tan(). В связи с этим возник вопрос:
Как можно проверить на какую кнопку нажали и в зависимости от этого передать в общую функцию нужную операцию?
Ответы (1 шт):
Автор решения: IvaMuxa
→ Ссылка
Можно вот так
function calc(e) {
console.log(e.value);
var firstValue = document.getElementById("firstNumber").value;
var secondValue = document.getElementById("secondNumber").value;
var output = 0;
var useFunc = function(){};
switch (e.value) {
case "sin": useFunc = Math.sin; break;
case "cos": useFunc = Math.cos; break;
}
if (firstValue == 0 && secondValue != 0) output = useFunc(secondValue);
else if (secondValue == 0 && firstValue != 0) output = useFunc(firstValue);
else if (firstValue == 0 && secondValue == 0) output = useFunc(0);
else alert("Заполните только одно поле!");
document.getElementById("result").innerText = output;
}
<input id="firstNumber" />
<input id="secondNumber" />
<button value="sin" onclick="calc(this)">sin</button>
<button value="cos" onclick="calc(this)">cos</button>
<div id="result"></div>