Должен ли я использовать операторы else-if для них?

Я очень новичок в кодировании и пытаюсь создать очень простой калькулятор с использованием 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) дает мне что-то.

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

Barmar 28.06.2019 23:39

Значение кнопки не меняется в зависимости от того, нажал ли на нее пользователь.

Barmar 28.06.2019 23:40

Здесь нет кода jQuery, только обычный JavaScript.

Barmar 28.06.2019 23:40

Спасибо за указание на это, очевидная ошибка с моей стороны!

cantcodecowboy 28.06.2019 23:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Вы должны изменить 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 />

Другие вопросы по теме