Я очень новичок в кодировании и пытаюсь создать очень простой калькулятор с использованием HTML и JavaScript, где пользователь вводит два значения, выбирает оператор из набора кнопок, а затем получает результат.
Я был бы признателен за некоторые советы от людей, которые знают, что они делают!!
Я пытался реализовать else-if, но, похоже, это не решает проблему. Выполняется только последняя строка функции. Python не был таким сложным?!
<button id = "a" value = "+">+</button>
<button id = "b" value = "-">-</button>
<button id = "c" value = "/">/</button>
<button id = "d" value = "X">X</button>
<input type = "text" id = "n1"/>
<input type = "text" id = "n2"/>
<script>
function calc()
{
var n1 = parseFloat(document.getElementById('n1').value);
var n2 = parseFloat(document.getElementById('n2').value);
var a = document.getElementById("a").value;
var b = document.getElementById("b").value;
var c = document.getElementById("c").value;
var d = document.getElementById("d").value;
if (a === '+')
{
document.getElementById('result').value = n1+n2;
}
if (b === '-')
{
document.getElementById('result').value = n1-n2;
}
if (c === '/')
{
document.getElementById('result').value = n1/n2;
}
if (d === 'X')
{
document.getElementById('result').value = n1*n2;
}
}
</script>
Я ожидаю, что каждая строка будет выполнена для получения правильного операнда, но в настоящее время единственная последняя строка (n1 * n2) дает мне что-то.
Значение кнопки не меняется в зависимости от того, нажал ли на нее пользователь.
Здесь нет кода jQuery, только обычный JavaScript.
Спасибо за указание на это, очевидная ошибка с моей стороны!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Все ваши условия верны, так как значение кнопки не меняется в зависимости от того, нажал ли на нее пользователь.
Вы должны изменить calc(), чтобы он принимал кнопку в качестве параметра, а затем проверял значение значения параметра. Оператор switch — это простой способ написать этот тип проверки.
function calc(button) {
var n1 = parseFloat(document.getElementById('n1').value);
var n2 = parseFloat(document.getElementById('n2').value);
let result;
switch (button.value) {
case '+':
result = n1 + n2;
break;
case '-':
result = n1 - n2;
break;
case '/':
result = n1 / n2;
break;
case 'X':
result = n1 * n2;
break;
}
document.getElementById('result').value = result;
}<input type = "text" id = "n1" />
<input type = "text" id = "n2" /><br>
<button id = "a" value = "+" onclick = "calc(this)">+</button>
<button id = "b" value = "-" onclick = "calc(this)">-</button>
<button id = "c" value = "/" onclick = "calc(this)">/</button>
<button id = "d" value = "X" onclick = "calc(this)">X</button>
<br>
<input type = "text" id = "result" readonly />
Все ваши
ifусловия верны. Они не имеют ничего общего с тем, какую кнопку нажал пользователь.