2016-12-05 59 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); 
} 

最后,您必须清除表达式并按下清除。这里是整个代码:

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

所以我理解上面的代码然而,如何按下等号按钮而不是等式自动显示 –

+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方法作为参数。你会得到你的答案。

相关问题