2015-11-13 4 views
2

Я пытаюсь выполнить операцию калькулятора, в зависимости от входных значений и оператора, результат должен отображаться. Я поражен проверкой деления на 0, и я не могу отобразить результат в другой функции. Пожалуйста, кто-то может мне помочь!проверка на деление на ноль в javascript

function calCaulation(e) { 
var x = document.getElementById("first").value; 
var y = document.getElementById("second").value; 
var z = document.getElementById("oper").value; 
var a = ""; 

if ((isNaN(x) || x == "") || (isNaN(y) || y == "")) { 
a = "Sum:Please enter the valid Number"; 
} 
if (z == "/" && y == 0) { 
a = "Divide By Zero Error"; 
} 
return a; 
} 
else { 
var x = parseFloat(document.getElementById("first").value); 
var y = parseFloat(document.getElementById("second").value); 
switch (z) { 
case ("+"): 
    a = "Sum:" + ((x + y).toFixed(2)); 
    break; 
case ("-"): 
    a = "Sub:" + ((x - y).toFixed(2)); 
    break; 
case ("*"): 
    a = "Mul:" + ((x * y).toFixed(2)); 
    break; 
case ("/"): 
    a = "Div:" + ((x/y).toFixed(2)); 
    break; 
default: 
    a = "Invalid Operator"; 
} 
return a; 
} 
} 
+2

Я вижу, что есть кронштейн после 'возврата;' о том, что на самом деле закрывает функцию – Phate01

+2

1. Закрытие цветка кронштейн «{» перед другой недопустим в вашем коде. 2. {var x = parseFloat (document.getElementById ("first")) значение); var y = parseFloat (document.getElementById ("second"). Value);} дважды присвоение было выполнено без необходимости. –

+0

Пустые строки - NaN. поэтому 'if ((isNaN (x) || x ==" ") || (isNaN (y) || y ==" ")) {' стал 'if (isNaN (x) || isNaN (y)) { '. –

ответ

1

У вас есть скобка и else статья слишком много.

См. Здесь для работы jsfiddle. https://jsfiddle.net/r2aq88tu/4/

редактировать: также, ваше возвращение заявление после проверки ошибок будет оставить функцию до того, как реальный код будет выполнять, я переместил return a внутри каждого if, чтобы заставить его работать.

Ваш новый код:

function calCaulation(e) { 
    var x = document.getElementById("first").value; 
    var y = document.getElementById("second").value; 
    var z = document.getElementById("oper").value; 
    var a = ""; 

    if ((isNaN(x) || x == "") || (isNaN(y) || y == "")) { 
     a = "Sum:Please enter the valid Number"; 
     return a; 
    } 
    if (z == "/" && y == 0) { 
     a = "Divide By Zero Error"; 
     return a; 
    } 


    var x = parseFloat(x); 
    var y = parseFloat(y); 
    switch (z) { 
     case ("+"): 
      a = "Sum:" + ((x + y).toFixed(2)); 
      break; 
     case ("-"): 
      a = "Sub:" + ((x - y).toFixed(2)); 
      break; 
     case ("*"): 
      a = "Mul:" + ((x * y).toFixed(2)); 
      break; 
     case ("/"): 
      a = "Div:" + ((x/y).toFixed(2)); 
      break; 
     default: 
      a = "Invalid Operator"; 
    } 
    return a; 

} 
+0

Его фактически не работает, вы можете проверить в плункере http://plnkr.co/edit/2lFuVL9BKsrOWV6hiCRa?p=preview –

Смежные вопросы