2016-12-05 10 views
0

Мне нужно сделать этот калькулятор работать с eval, однако я попытался сделать эту работу несколько раз по-разному, какая бы помощь ни работала.У меня возникла проблема с тем, что этот калькулятор работает с eval

$(document).ready(function() { 
    $(".digit").click(function() { 
    var num = $(this).text(); 
    $("#calculation").text(num); 
    }); 

    $(".operator").click(function() { 
    var math = $(this).text(); 
    $("#calculation").text(math); 
    }); 

    $(".clear").click(function() { 
    var clear = $(this).text(); 
    $("#calculation").text("0"); 
    }); 
}); 
+0

что вы пытаетесь сделать? –

+0

Я пытаюсь сделать калькулятор с помощью eval (я никогда не использовал его раньше). Я довольно новичок в jquery, и я использовал учебные пособия и т. Д., Но я не могу что-то выяснить. –

ответ

0

Хорошо, давайте попробуем это.

Прежде всего вам нужно сохранить выражение где-то. В глобальной переменной, например:

var expression = ""; 

$(document).ready(function() { 
... 
}); 

Затем необходимо добавить цифры и операторов выражения, оценки и отображения результата. Давайте сделаем следующее:

function appendChar(char) { 
    expression += char; 
    var result; 
    try { 
     result = eval(expression); 
    } catch (e) { 
     // failure to evaluate 
     result = "error"; 
    } 
    $("#calculation").text(result); 
} 

Наконец, вы должны очистить выражение нажатием кнопки clear. Вот весь код:

var expression = ""; 
function appendChar(char) { 
    expression += char; 
    var result; 
    try { 
     result = eval(expression); 
    } catch (e) { 
     // failure to evaluate 
     result = "error"; 
    } 
    $("#calculation").text(result); 
} 

$(document).ready(function() { 

    $(".digit, .operator").click(function() { 
     appendChar($(this).text()); 
    }); 

    $(".clear").click(function() { 
     expression = ""; 
     $("#calculation").text("0"); 
    }); 
}); 

UPDATE:

Чтобы показать, что происходит, вы можете отобразить выражение, а также результат:

function appendChar(char) { 
    expression += char; 
    var result; 
    try { 
     result = eval(expression); 
     $("#calculation").text(expression + " = " + result); 
    } catch (e) { 
     $("#calculation").text(expression); 
    } 
} 
+0

спасибо, что сломал. Я понимаю это ясно. –

+0

so i понять вышеприведенный код, как бы я сделал равную кнопку работать при нажатии вместо уравнения автоматически показывая –

+0

@CharlieAxsom да, я думаю, что будет лучше с равной кнопкой –

0

Вы заменяете текст в #calculation целиком, а не конкатенации к нему, чтобы сформировать математическое выражение.

Попробуйте следующий код:

$(document).ready(function() { 
    $(".digit").click(function() { 
    var num = $(this).text(); 
    var calculation = $("#calculation").text(); 
    $("#calculation").text(calculation + num); 
    }); 

    $(".operator").click(function() { 
    var math = $(this).text(); 
    var calculation = $("#calculation").text(); 
    $("#calculation").text(calculation + match); 
    }); 

    // ... remaining code truncated 
}); 

После кнопки = нажата, вы можете взять текст из #calculation и передать его eval методу в качестве параметра. Вы получите ответ.