Должен ли я использовать операторы else-if для них? - PullRequest
0 голосов
/ 29 июня 2019

Я очень плохо знаком с кодированием и пытался создать очень простой калькулятор, используя HTML и JavaScript, где пользователь вводит два значения, выбирает оператор из выбора кнопок и затем получает результат.

Буду признателен за советы от людей, которые знают, что делают !!

Я пытался реализовать else-ifs, но, похоже, это не решает проблему.Выполняется только последняя строка функции.Питон не был таким сложным ?!

<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) дает мне что-нибудь.

1 Ответ

0 голосов
/ 29 июня 2019

Все ваши условия выполняются, поскольку значение кнопки не изменяется в зависимости от того, нажал ли пользователь на нее.

Вам следует изменить 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 />
...