2016-12-05 37 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方法作爲參數。你會得到你的答案。