Не видя ваш полный код (включая HTML), трудно дать полный ответ. Но я могу дать вам понять, что происходит не так.
Javascript - это Truthy / Falsy язык. Значение того, что не является явно ложным, оценивается как истинное.
Следовательно, if(sub)
всегда оценивается как true
, потому что sub это просто элемент с идентификатором "sub", а не значением элемента (которое это то, что, как я полагаю, вы хотите, но опять же, без полного кода, это трудно узнать).
ОБНОВЛЕНИЕ:
Вам нужно будет выполнить оператор if со значением вашего operator
элемент. В прослушивателе событий выполните следующие действия:
var op = document.getElementById("operator").value;
switch(op){
case "sub":
result.textContent = Number(opOne.value) - Number(opTwo.value);
console.log("Subtraction works");
break;
case "add":
result.textContent = Number(opOne.value) + Number(opTwo.value);
console.log("Additon works");
break;
case "mul":
result.textContent = Number(opOne.value) * Number(opTwo.value);
console.log("Multiplication works");
break;
case "div":
result.textContent = Number(opOne.value) / Number(opTwo.value);
console.log("Divison works")
break;
}
Обратите внимание, что вам необходимо изменить значение параметров умножения и деления, чтобы точно отразить их операторы (в настоящее время оба имеют значение «add»).
Отказ от ответственности: я в настоящее время на работе, и у меня нет возможности проверить этот код, но он должен указать вам правильное направление для того, что вам нужно сделать.