2015-11-01 31 views
1

我寫了簡單的計算器在JS & jQuery和我遇到了奇怪的行爲。在下面的代碼中,您會看到變量公式,其中包含計算器上按下的每個數字。然後我使用eval()來評估。爲什麼方程的值在最後沒有定義?

問題是,方程變量的這個值是你所期望但不確定末,而不能找出原因。

整個項目位置:http://codepen.io/ketus/full/XmYRoV/

感謝您的幫助提前!

PS .:我知道關於eval()的一般意見。它只用於測試,所以我可以移動。我將在解決undefined問題後實施我自己的解決方案。

$(document).ready(function() { 
 
    
 
    var equation = ''; 
 
    var input = $('h2[data-value]'); 
 
    var info = $('#info'); 
 
    //get keys 
 
    var keys = $('.key').filter(function() { 
 
    return $(this).data('key'); 
 
    }).get(); 
 
    
 
    //get operators 
 
    var operators = $('.operator').filter(function() { 
 
    return $(this).data('operator'); 
 
    }).get();  
 
    
 
    //Clearing input 
 
    $('.clear').click(function(){ 
 
    equation = ''; 
 
    input.html(''); 
 
    info.html(''); 
 
    }); 
 
    
 
    //user press keys, check if correct after each click 
 
    $('.key').click(function(){ 
 
    equation += $(this).data('key'); 
 
    //evaluateEquation(); 
 
    input.html(equation);  
 
    }); 
 
    
 
    //showing result 
 
    $('a[data-calc]').click(function(){ 
 
    input.html(eval(equation.toString())); 
 
    }); 
 
    
 
    // rules for equation to be correct 
 
    //function evaluateEquation() {  
 
    //} 
 
    
 
    function calculate(){  
 
    if(equation.length > 0){  
 
     return eval(equation); 
 
    } else { 
 
     info.html('Enter something!'); 
 
     return ''; 
 
    } 
 
    } 
 
    
 
});

+0

沒有'數據key'爲等於按鈕 –

回答

3

的主要問題是與用戶按下事件處理程序。如果按=,則不應附加data('key')。例如,您可以排除這個按鈕是這樣的:

//user press keys, check if correct after each click 
    $('.key:not([data-calc])').click(function(){ 
    equation += $(this).data('key'); 
    input.html(equation);  
    }); 

演示:http://codepen.io/anon/pen/qOKwOE?editors=101

+0

偉大的答案。謝謝! – Ketus

相關問題