Я начал изучать Javascript, я пытаюсь создать калькулятор, который просто умножает 2 числа, и я получаю эту ошибку в своей консоли браузера. Кто-нибудь может помочь?

   <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Calc</title>
    <style>#result{position: relative; top: 5px;}</style>
</head>
<body>
    <input type="number" id="first"> *
    <input type="number" id="second">
    <br>
    <input type="submit" id="result" value="Check out" onclick="res()"></input> <span id="span"></span> 
    <script>
        function res() {
            var a = document.getElementById("first").value;
            var b = document.getElementById("second").value;
            var span = document.getElementById("span");
            if(a != 0 && b !=0) {
                span.innerHTML = a * b;
            }
            if(a = 0 ||  b = 0) {
                span.innerHTML = "0"; // I know browser can do it automatically without 21 and 22 strings but i need that it works this way.  
            }
        }
    </script>
</body>
</html>
-1
Kirill Smirnov 10 Июл 2015 в 22:33
1
== используется для сравнения на равенство, понимаете?
 – 
nicael
10 Июл 2015 в 22:34
Моя ошибка, спасибо, я думал, что это из-за ||
 – 
Kirill Smirnov
10 Июл 2015 в 22:37

2 ответа

Во-первых, если вы собираетесь выполнять какие-либо математические операции с текстовым вводом, вам необходимо преобразовать их в числа. Вы можете использовать parseInt(num, 10) или parseFloat(num).

Во-вторых, в одном из ваших операторов if вы на самом деле не сравниваете переменные a и b, а присваиваете им 0. Используйте два знака равенства == для сравнения переменных.

В-третьих, вы можете просто проверить, являются ли они числами, используя isNaN(num). Это устранит первый оператор if.

function res() {
  var a = parseFloat(document.getElementById("first").value);
  var b = parseFloat(document.getElementById("second").value);
  var span = document.getElementById("span");
  
  if (isNaN(a) || isNaN(b)) {
    span.innerHTML = "0";
  }
  else {
    span.innerHTML = a * b;
  }
}
<input type="number" id="first">*
<input type="number" id="second">
<br>
<input type="submit" id="result" value="Check out" onclick="res()"></input> <span id="span"></span> 
0
Samuel Liew 10 Июл 2015 в 22:37

Проверьте здесь свой исправленный код

<html>
<head>

    <title>Calc</title>
    <style>#result{position: relative; top: 5px;}</style>
</head>
<body>
    <input type="number" id="first"> *
    <input type="number" id="second">
    <br>
    <input type="submit" id="result" value="Check out" onclick="res()"></input> <span id="span"></span> 
    <script>
        function res() {
            var a = document.getElementById("first").value;
            var b = document.getElementById("second").value;
            var span = document.getElementById("span");
            if(a != 0 && b !=0) {
                span.innerHTML = a * b;
            }
            if(a == 0 ||  b == 0) {
                span.innerHTML = "0"; // I know browser can do it automatically without 21 and 22 strings but i need that it works this way.  
            }
        }
    </script>
</body>
</html>
-1
ASP 10 Июл 2015 в 22:38